diff --git a/Cargo.lock b/Cargo.lock index 1e5ac8d..a29f0fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6182,6 +6182,7 @@ version = "0.1.0" dependencies = [ "anyhow", "getrandom 0.3.4", + "hex", "serde", "serde_json", "tauri", @@ -6204,6 +6205,7 @@ dependencies = [ "bs58", "serde", "thiserror 2.0.18", + "tokio", "toml 0.8.2", "wallet-entities", "zeroize", @@ -6215,6 +6217,7 @@ version = "0.1.0" dependencies = [ "aes-gcm", "argon2", + "async-trait", "bip39", "blake2", "chrono", diff --git a/crates/wallet-app/Cargo.toml b/crates/wallet-app/Cargo.toml index 6581722..da92a8d 100644 --- a/crates/wallet-app/Cargo.toml +++ b/crates/wallet-app/Cargo.toml @@ -29,6 +29,7 @@ tracing-subscriber.workspace = true anyhow.workspace = true zeroize.workspace = true getrandom.workspace = true +hex.workspace = true [dev-dependencies] toml.workspace = true diff --git a/crates/wallet-app/src/commands.rs b/crates/wallet-app/src/commands.rs index def8448..bbc9d7d 100644 --- a/crates/wallet-app/src/commands.rs +++ b/crates/wallet-app/src/commands.rs @@ -8,6 +8,9 @@ use std::time::Instant; +use wallet_core::{ChainAdapter, SignedBy, TransferIntent, TxStatus}; +use wallet_data::substrate::SubstrateAdapter; + use tauri::State; use wallet_core::backup::BackupChallenge; use wallet_core::session::SessionError; @@ -17,8 +20,9 @@ use wallet_data::keys::seed_from_mnemonic; use wallet_data::mnemonic; use wallet_data::substrate::{ChainManager, account_info}; use wallet_entities::{ - AccountBalance, Amount, ChainId, ChainProfile, ChainStatus, HighSecurityInfo, - SessionAccountInfo, SessionStatusInfo, + AccountBalance, AccountRef, Amount, AssetId, AssetKind, ChainId, ChainProfile, ChainStatus, + HighSecurityInfo, PendingReversible, PreparedTransferInfo, SessionAccountInfo, + SessionStatusInfo, TxStage, TxStatusInfo, }; use wallet_entities::{ AppInfo, CreationChallenge, CreationStart, SignatureScheme, WalletError, WalletSummary, @@ -270,6 +274,7 @@ pub fn chain_status( endpoint: None, spec_version: None, transaction_version: None, + best_number: None, finalized_number: None, head_age_seconds: None, last_error: None, @@ -311,7 +316,7 @@ pub async fn read_balances( if accounts.is_empty() { return Err(WalletError::Locked); } - let at_block = manager.status().finalized_number; + let finalized_block = manager.status().finalized_number; let mut out = Vec::with_capacity(accounts.len()); for a in accounts { let info = account_info(&conn, a.account_id) @@ -333,7 +338,8 @@ pub async fn read_balances( delay_blocks: h.delay_blocks, delay_ms: h.delay_ms, }), - at_block, + at_block: info.at_block, + finalized_block, }); } Ok(out) @@ -347,7 +353,7 @@ pub async fn balances( read_balances(&state, &chain).await } -/// Start refreshing balances for `chain` on every finalized head and +/// Start refreshing balances for `chain` on every best head and /// emitting `balances:updated` with the result. Idempotent per chain. #[tauri::command] pub async fn balances_watch( @@ -376,7 +382,7 @@ pub async fn balances_watch( { return Ok(()); } - let mut heads = manager.finalized_heads(); + let mut heads = manager.best_heads(); let task_chain = chain.clone(); let handle = tauri::async_runtime::spawn(async move { let chain = task_chain; @@ -397,3 +403,246 @@ pub async fn balances_watch( watchers.insert(chain, handle); Ok(()) } + +fn adapter_for(state: &AppState, chain: &ChainId) -> Result { + let chains = state + .chains + .lock() + .map_err(|_| WalletError::Internal("state poisoned".into()))?; + let manager = chains + .get(chain) + .cloned() + .ok_or_else(|| WalletError::Internal(format!("{} not connected", chain.0)))?; + Ok(SubstrateAdapter::new(manager)) +} + +fn chain_error(e: wallet_core::ChainError) -> WalletError { + use wallet_core::ChainError::*; + match e { + InvalidAddress(m) | Unsupported(m) => WalletError::InvalidInput(m), + Disconnected(m) | Rpc(m) | Other(m) => WalletError::Chain(m), + } +} + +/// Which of the open wallet's accounts `address` is, or `Locked`/`NotFound`. +fn my_account(state: &AppState, chain: &ChainId, address: &str) -> Result { + let profile = state + .profiles + .get(chain) + .ok_or_else(|| WalletError::NotFound(format!("chain {}", chain.0)))?; + let status = state + .session + .status(Instant::now()) + .map_err(session_error)?; + if status.wallet.is_none() { + return Err(WalletError::Locked); + } + let account = status + .accounts + .iter() + .find(|a| ss58::encode(profile.ss58_prefix, &a.account_id) == address) + .ok_or_else(|| WalletError::NotFound(format!("account {address} in the open wallet")))?; + Ok(AccountRef { + chain: chain.clone(), + address: address.to_owned(), + scheme: account.scheme, + }) +} + +fn remember_prepared( + state: &AppState, + prepared: wallet_core::PreparedTransaction, +) -> Result { + let mut id_bytes = [0u8; 12]; + getrandom::fill(&mut id_bytes).map_err(|e| WalletError::Internal(e.to_string()))?; + let id = hex::encode(id_bytes); + let profile = state + .profiles + .get(&prepared.chain) + .ok_or_else(|| WalletError::NotFound("chain".into()))?; + let info = PreparedTransferInfo { + id: id.clone(), + chain: prepared.chain.clone(), + from: ss58::encode(profile.ss58_prefix, &prepared.from), + summary: prepared.summary.clone(), + fee: prepared.fee, + nonce: prepared.nonce, + valid_for_blocks: prepared.mortal_for, + }; + state + .prepared + .lock() + .map_err(|_| WalletError::Internal("state poisoned".into()))? + .insert(id, prepared); + Ok(info) +} + +/// Build a transfer for review. `amount` is the human decimal form; Rust +/// parses it against the asset's decimals. `reversible_for` is a +/// cancellation window in blocks. +#[tauri::command] +pub async fn transfer_prepare( + state: State<'_, AppState>, + chain: ChainId, + from: String, + to: String, + amount: String, + reversible_for: Option, +) -> Result { + let profile = state + .profiles + .get(&chain) + .cloned() + .ok_or_else(|| WalletError::NotFound(format!("chain {}", chain.0)))?; + let from_ref = my_account(&state, &chain, &from)?; + let amount = + Amount::parse(&amount, profile.token_decimals).map_err(WalletError::InvalidInput)?; + let adapter = adapter_for(&state, &chain)?; + let intent = TransferIntent::Transfer { + asset: AssetId { + chain: chain.clone(), + kind: AssetKind::Native, + }, + to, + amount, + reversible_for, + }; + let prepared = adapter + .prepare(&from_ref, &intent) + .await + .map_err(chain_error)?; + remember_prepared(&state, prepared) +} + +/// Build a cancellation of a pending reversible transfer for review. +#[tauri::command] +pub async fn reversible_cancel_prepare( + state: State<'_, AppState>, + chain: ChainId, + from: String, + tx_id: String, +) -> Result { + let from_ref = my_account(&state, &chain, &from)?; + let bytes = hex::decode(tx_id.trim_start_matches("0x")) + .map_err(|e| WalletError::InvalidInput(format!("tx id: {e}")))?; + let tx_id: [u8; 32] = bytes + .try_into() + .map_err(|_| WalletError::InvalidInput("tx id is not 32 bytes".into()))?; + let adapter = adapter_for(&state, &chain)?; + let prepared = adapter + .prepare(&from_ref, &TransferIntent::CancelReversible { tx_id }) + .await + .map_err(chain_error)?; + remember_prepared(&state, prepared) +} + +/// Sign a prepared transaction with the session and submit it. Progress +/// arrives as `tx:status` events carrying the prepared id and the hash. +#[tauri::command] +pub async fn transfer_submit( + app: tauri::AppHandle, + state: State<'_, AppState>, + id: String, +) -> Result { + use tauri::Emitter; + let prepared = state + .prepared + .lock() + .map_err(|_| WalletError::Internal("state poisoned".into()))? + .remove(&id) + .ok_or_else(|| WalletError::NotFound(format!("prepared transaction {id}")))?; + let signature = state + .session + .sign( + &prepared.from, + &prepared.signing_payload, + &prepared.signing_context, + Instant::now(), + ) + .map_err(session_error)?; + let public_key = state + .session + .status(Instant::now()) + .map_err(session_error)? + .accounts + .into_iter() + .find(|a| a.account_id == prepared.from) + .map(|a| a.public_key) + .ok_or(WalletError::Locked)?; + let adapter = adapter_for(&state, &prepared.chain)?; + let (hash, mut rx) = adapter + .submit( + &prepared, + SignedBy { + scheme: prepared.scheme, + public_key, + signature, + }, + ) + .await + .map_err(chain_error)?; + let hash_hex = format!("0x{}", hex::encode(hash)); + let emit_id = id.clone(); + let emit_hash = hash_hex.clone(); + tauri::async_runtime::spawn(async move { + while let Some(status) = rx.recv().await { + let stage = match status { + TxStatus::Submitted => TxStage::Submitted, + TxStatus::InBlock { block } => TxStage::InBlock { + block: format!("0x{}", hex::encode(block)), + }, + TxStatus::Finalized { block } => TxStage::Finalized { + block: format!("0x{}", hex::encode(block)), + }, + TxStatus::Failed { block, reason } => TxStage::Failed { + block: block.map(|b| format!("0x{}", hex::encode(b))), + reason, + }, + TxStatus::Dropped { reason } => TxStage::Dropped { reason }, + }; + let _ = app.emit( + "tx:status", + TxStatusInfo { + id: emit_id.clone(), + hash: emit_hash.clone(), + stage, + }, + ); + } + }); + Ok(hash_hex) +} + +/// Forget a prepared transaction without submitting it. +#[tauri::command] +pub fn transfer_discard(state: State<'_, AppState>, id: String) -> Result<(), WalletError> { + state + .prepared + .lock() + .map_err(|_| WalletError::Internal("state poisoned".into()))? + .remove(&id); + Ok(()) +} + +/// Reversible transfers still pending from `address`. +#[tauri::command] +pub async fn reversible_pending( + state: State<'_, AppState>, + chain: ChainId, + address: String, +) -> Result, WalletError> { + let profile = state + .profiles + .get(&chain) + .ok_or_else(|| WalletError::NotFound(format!("chain {}", chain.0)))?; + let (prefix, me) = + ss58::decode(&address).map_err(|e| WalletError::InvalidInput(e.to_string()))?; + if prefix != profile.ss58_prefix { + return Err(WalletError::InvalidInput(format!( + "{address} is not a {} address", + profile.display_name + ))); + } + let adapter = adapter_for(&state, &chain)?; + adapter.pending_reversible(me).await.map_err(chain_error) +} diff --git a/crates/wallet-app/src/lib.rs b/crates/wallet-app/src/lib.rs index 0e3b7fa..4513738 100644 --- a/crates/wallet-app/src/lib.rs +++ b/crates/wallet-app/src/lib.rs @@ -52,6 +52,11 @@ pub fn run() { commands::chain_status, commands::balances, commands::balances_watch, + commands::transfer_prepare, + commands::transfer_submit, + commands::transfer_discard, + commands::reversible_cancel_prepare, + commands::reversible_pending, ]) .run(tauri::generate_context!()) .expect("the Tauri runtime failed to start"); diff --git a/crates/wallet-app/src/state.rs b/crates/wallet-app/src/state.rs index 47305fb..2b042ea 100644 --- a/crates/wallet-app/src/state.rs +++ b/crates/wallet-app/src/state.rs @@ -7,6 +7,7 @@ use std::collections::HashMap; use std::sync::Mutex; use std::time::Duration; +use wallet_core::PreparedTransaction; use wallet_core::backup::BackupChallenge; use wallet_core::profiles::ProfileRegistry; use wallet_core::session::Session; @@ -39,6 +40,10 @@ pub struct AppState { /// One balance watcher per chain, refreshing the open wallet's accounts /// on every finalized head and emitting `balances:updated`. pub balance_watchers: Mutex>>, + /// Transactions prepared and awaiting the person's confirmation, by id. + /// A submit consumes one; a new prepare for the same purpose replaces + /// nothing, it just adds, and stale ones are refused by the chain. + pub prepared: Mutex>, } impl AppState { @@ -75,6 +80,7 @@ impl AppState { profiles, chains: Mutex::new(HashMap::new()), balance_watchers: Mutex::new(HashMap::new()), + prepared: Mutex::new(HashMap::new()), }) } } diff --git a/crates/wallet-core/Cargo.toml b/crates/wallet-core/Cargo.toml index 720ea73..6146f95 100644 --- a/crates/wallet-core/Cargo.toml +++ b/crates/wallet-core/Cargo.toml @@ -17,3 +17,4 @@ blake2.workspace = true bs58.workspace = true serde.workspace = true toml.workspace = true +tokio.workspace = true diff --git a/crates/wallet-core/src/ports.rs b/crates/wallet-core/src/ports.rs index 3d495cd..b69beca 100644 --- a/crates/wallet-core/src/ports.rs +++ b/crates/wallet-core/src/ports.rs @@ -3,7 +3,7 @@ use async_trait::async_trait; use wallet_entities::{ - AccountRef, Amount, AssetId, AssetInfo, ChainId, SignatureScheme, WalletSummary, + AccountRef, Amount, AssetId, AssetInfo, CallSummary, ChainId, SignatureScheme, WalletSummary, }; use zeroize::Zeroizing; @@ -134,39 +134,75 @@ pub enum KeystoreError { Key(#[from] KeyError), } -/// What the wallet wants done on a chain, in chain-neutral terms. The adapter -/// turns it into a transaction the chain understands. +/// What the wallet wants done on a chain, in chain-neutral terms. The +/// adapter turns it into a transaction the chain understands. #[derive(Debug, Clone)] pub enum TransferIntent { - /// Move `amount` of `asset` to `to`. `reversible` asks for a cancellation - /// window where the chain offers one; adapters without it must refuse - /// rather than silently send an irreversible transfer. + /// Move `amount` of `asset` to `to`. `reversible_for` asks for a + /// cancellation window of that many blocks where the chain offers one; + /// adapters without it must refuse rather than silently send an + /// irreversible transfer. Transfer { asset: AssetId, to: String, amount: Amount, - reversible: bool, + reversible_for: Option, }, + /// Cancel a pending reversible transfer the sender (or its guardian) + /// scheduled. `tx_id` is the chain's identifier for it. + CancelReversible { tx_id: [u8; 32] }, } /// A transaction the user has reviewed, ready to sign. `summary` is what the -/// review screen showed, decoded by the adapter from the bytes, never from the +/// review screen shows, decoded by the adapter from the bytes, never from the /// intent; the two must agree or the adapter has a bug worth a refusal. #[derive(Debug, Clone)] pub struct PreparedTransaction { pub chain: ChainId, + pub from: [u8; 32], + pub scheme: SignatureScheme, + pub call_data: Vec, + pub summary: CallSummary, + pub fee: Amount, + pub nonce: u64, + /// The block the transaction is mortal from, and for how many blocks. + pub mortal_from: (u64, [u8; 32]), + pub mortal_for: u64, pub signing_payload: Vec, pub signing_context: Vec, - pub summary: String, - pub fee: Amount, + /// Runtime spec the payload was built against; refused at submit if the + /// chain has moved on, since the signature would no longer be valid. + pub spec_version: u32, } +/// A signature the session produced for a prepared transaction. +#[derive(Debug, Clone)] +pub struct SignedBy { + pub scheme: SignatureScheme, + pub public_key: Vec, + pub signature: Vec, +} + +/// Progress of a submitted transaction, in the order the chain reports it. #[derive(Debug, Clone, PartialEq, Eq)] pub enum TxStatus { - Pending, - InBlock { block: String }, - Finalized { block: String }, - Failed { reason: String }, + Submitted, + InBlock { + block: [u8; 32], + }, + Finalized { + block: [u8; 32], + }, + /// Included and finalized, but the call failed; `reason` names the + /// pallet and error variant where the chain provides them. + Failed { + block: Option<[u8; 32]>, + reason: String, + }, + /// Never made it: invalid, dropped, or the connection was lost. + Dropped { + reason: String, + }, } /// One chain, as the wallet talks to it. Implementations own the RPC client @@ -184,22 +220,20 @@ pub trait ChainAdapter: Send + Sync { async fn balance(&self, account: &AccountRef, asset: &AssetId) -> Result; + /// Build the transaction, decode it back for review, and price it. async fn prepare( &self, from: &AccountRef, intent: &TransferIntent, ) -> Result; - /// Attach a signature (with its public key, where the chain wants it on - /// the wire) and submit. Returns the chain's transaction identifier. + /// Assemble with the signature and submit. Statuses arrive on the + /// returned receiver until a terminal one. Returns the transaction hash. async fn submit( &self, prepared: &PreparedTransaction, - signer: &dyn Signer, - signature: &[u8], - ) -> Result; - - async fn status(&self, tx_id: &str) -> Result; + signed: SignedBy, + ) -> Result<([u8; 32], tokio::sync::mpsc::Receiver), ChainError>; } #[derive(Debug, thiserror::Error)] diff --git a/crates/wallet-data/Cargo.toml b/crates/wallet-data/Cargo.toml index ca7be81..c7ce78b 100644 --- a/crates/wallet-data/Cargo.toml +++ b/crates/wallet-data/Cargo.toml @@ -32,6 +32,7 @@ subxt.workspace = true parity-scale-codec.workspace = true hex.workspace = true tokio.workspace = true +async-trait.workspace = true [dev-dependencies] tokio.workspace = true diff --git a/crates/wallet-data/src/keystore.rs b/crates/wallet-data/src/keystore.rs index fd28e7d..882f5c9 100644 --- a/crates/wallet-data/src/keystore.rs +++ b/crates/wallet-data/src/keystore.rs @@ -541,7 +541,7 @@ mod tests { .filter(|n| n != "readme") .collect(); names.sort(); - assert_eq!(names.len(), 8, "{names:?}"); + assert_eq!(names.len(), 10, "{names:?}"); names } @@ -558,6 +558,12 @@ mod tests { SignatureScheme::MlDsa87 }; assert_eq!(opened.signer.scheme(), expected_scheme, "{name}"); + if name.starts_with("crystal_") { + // Dev accounts: raw-seed keys, no phrase, path "m/". + assert_eq!(opened.derivation_path, "m/", "{name}"); + assert!(opened.mnemonic.is_none(), "{name}"); + continue; + } assert!( opened.derivation_path.starts_with("m/44'/189189'/"), "{name}: {}", @@ -598,7 +604,7 @@ mod tests { fn lists_fixtures_without_decrypting_anything() { let ks = FileKeystore::in_dir(fixtures()); let list = ks.list().unwrap(); - assert_eq!(list.len(), 8); + assert_eq!(list.len(), 10); assert!( list.iter() .all(|w| w.address.starts_with("qz") && w.kind == WalletKind::Hot) diff --git a/crates/wallet-data/src/substrate/accounts.rs b/crates/wallet-data/src/substrate/accounts.rs index 64c49a2..b03d39c 100644 --- a/crates/wallet-data/src/substrate/accounts.rs +++ b/crates/wallet-data/src/substrate/accounts.rs @@ -1,7 +1,12 @@ //! What the chain knows about an account: balance parts, nonce, and whether //! it is a high-security account whose transfers must go through the -//! reversible-transfers pallet. Read from finalized state, so a number the -//! UI shows cannot be reorganised away. +//! reversible-transfers pallet. +//! +//! Read at the *best* block, with the block number reported alongside so +//! the UI can show how many confirmations deep the number is. On a +//! proof-of-work chain finality trails the tip by a hundred blocks; a +//! balance read at the finalized block would be twenty minutes stale on +//! mainnet, which is not what a person means by "my balance". use subxt::dynamic::Value; use subxt::ext::scale_value::At; @@ -42,6 +47,8 @@ pub struct AccountInfo { pub nonce: u64, pub balance: Balance, pub high_security: Option, + /// The best block the numbers were read at. + pub at_block: u64, } fn rpc_err(e: impl std::fmt::Display) -> ChainError { @@ -62,11 +69,42 @@ fn u128_at(v: &Value, path: &[&str]) -> Result { /// Read `System::Account` and `ReversibleTransfers::HighSecurityAccounts` /// at the latest finalized block. An account the chain has never seen has /// zero balance and nonce zero, not an error. +/// Storage at the best block, and that block's number. `at_latest()` in +/// subxt means the finalized block, which on this chain is a hundred blocks +/// behind the tip; nothing the UI shows should be read there. +pub async fn storage_at_best( + conn: &ChainConnection, +) -> Result< + ( + subxt::storage::Storage< + super::config::QuantusConfig, + subxt::OnlineClient, + >, + u64, + ), + ChainError, +> { + let header = conn + .rpc + .chain_get_header(None) + .await + .map_err(rpc_err)? + .ok_or_else(|| ChainError::Rpc("no best header".into()))?; + let at_block = u64::from(header.number); + let best_hash = conn + .rpc + .chain_get_block_hash(Some(at_block.into())) + .await + .map_err(rpc_err)? + .ok_or_else(|| ChainError::Rpc("best block has no hash".into()))?; + Ok((conn.client.storage().at(best_hash), at_block)) +} + pub async fn account_info( conn: &ChainConnection, account: [u8; 32], ) -> Result { - let storage = conn.client.storage().at_latest().await.map_err(rpc_err)?; + let (storage, at_block) = storage_at_best(conn).await?; let addr = subxt::dynamic::storage("System", "Account", vec![Value::from_bytes(account)]); let (nonce, balance) = match storage.fetch(&addr).await.map_err(rpc_err)? { @@ -135,6 +173,7 @@ pub async fn account_info( nonce, balance, high_security, + at_block, }) } diff --git a/crates/wallet-data/src/substrate/adapter.rs b/crates/wallet-data/src/substrate/adapter.rs new file mode 100644 index 0000000..bebf28e --- /dev/null +++ b/crates/wallet-data/src/substrate/adapter.rs @@ -0,0 +1,1147 @@ +//! The `ChainAdapter` for Quantus chains. Prepares a transaction from a +//! chain-neutral intent, decodes it back from its own bytes for the review +//! screen, prices it exactly, and submits it with a signature the session +//! made elsewhere. Reversible transfers and their cancellation go through +//! the reversible-transfers pallet; a high-security account is routed there +//! whether it asked or not, because a plain transfer from one is refused by +//! the chain's transaction extension. + +use async_trait::async_trait; +use parity_scale_codec::{Decode, Encode}; +use subxt::dynamic::Value; +use subxt::ext::scale_value::{self, At, Composite, Primitive, ValueDef}; +use subxt::tx::TxStatus as SubxtTxStatus; +use subxt::utils::{AccountId32, H256}; +use tokio::sync::mpsc; +use wallet_core::{ + ChainAdapter, ChainError, PreparedTransaction, SignedBy, TransferIntent, TxStatus, ss58, +}; +use wallet_entities::{ + AccountRef, Amount, AssetId, AssetInfo, AssetKind, CallField, CallSummary, ChainId, + ChainProfile, PendingReversible, SignatureScheme, +}; + +use super::accounts::account_info; +use super::config::{DILITHIUM65_WIRE_LEN, DILITHIUM87_WIRE_LEN, DilithiumSignature}; +use super::connection::{ChainConnection, ChainManager}; +use super::offline::{ChainState, Mortality, sign_call}; +use crate::keys::account_id; + +/// How many blocks a transaction stays valid for after preparation. +pub const MORTALITY_BLOCKS: u64 = 64; + +pub struct SubstrateAdapter { + manager: ChainManager, +} + +impl SubstrateAdapter { + pub fn new(manager: ChainManager) -> Self { + Self { manager } + } + + pub fn profile(&self) -> &ChainProfile { + self.manager.profile() + } + + pub fn manager(&self) -> &ChainManager { + &self.manager + } + + fn conn(&self) -> Result { + self.manager.connection() + } + + fn native_asset(&self) -> AssetId { + AssetId { + chain: self.profile().id.clone(), + kind: AssetKind::Native, + } + } + + fn parse_address(&self, s: &str) -> Result<[u8; 32], ChainError> { + let (prefix, bytes) = + ss58::decode(s).map_err(|e| ChainError::InvalidAddress(format!("{s}: {e}")))?; + if prefix != self.profile().ss58_prefix { + return Err(ChainError::InvalidAddress(format!( + "{s} is an address with SS58 prefix {prefix}, not a {} address (prefix {})", + self.profile().display_name, + self.profile().ss58_prefix + ))); + } + Ok(bytes) + } + + /// Decode call bytes through the runtime metadata into a summary a person + /// can check against what they typed. + pub fn decode_call(&self, state: &ChainState, call: &[u8]) -> Result { + let metadata = &state.metadata; + let ty = metadata.outer_enums().call_enum_ty(); + let mut cursor = call; + let value = scale_value::scale::decode_as_type(&mut cursor, ty, metadata.types()) + .map_err(|e| ChainError::Other(format!("decode call: {e}")))?; + if !cursor.is_empty() { + return Err(ChainError::Other(format!( + "{} trailing bytes after the call", + cursor.len() + ))); + } + let ValueDef::Variant(pallet) = value.value else { + return Err(ChainError::Other("call is not a pallet variant".into())); + }; + let inner = pallet + .values + .into_values() + .next() + .ok_or_else(|| ChainError::Other("empty pallet variant".into()))?; + let ValueDef::Variant(callv) = inner.value else { + return Err(ChainError::Other("call is not a call variant".into())); + }; + let fields = match callv.values { + Composite::Named(named) => named + .into_iter() + .map(|(name, v)| CallField { + value: self.render(&name, &v), + name, + }) + .collect(), + Composite::Unnamed(list) => list + .into_iter() + .enumerate() + .map(|(i, v)| CallField { + value: self.render("", &v), + name: i.to_string(), + }) + .collect(), + }; + Ok(CallSummary { + pallet: pallet.name, + call: callv.name, + fields, + }) + } + + /// Render one argument: a 32-byte account (bare or inside `Id`) as SS58, + /// an amount-named integer in the token's units, anything else as the + /// chain names it. + fn render(&self, name: &str, v: &Value) -> String { + if let Some(bytes) = as_account_bytes(v) { + return ss58::encode(self.profile().ss58_prefix, &bytes); + } + if let ValueDef::Variant(var) = &v.value { + if var.name == "Id" { + if let Some(bytes) = var.values.values().next().and_then(as_account_bytes) { + return ss58::encode(self.profile().ss58_prefix, &bytes); + } + } + } + if let Some(n) = v.as_u128() { + if matches!(name, "value" | "amount" | "tip" | "fee") { + return format!( + "{} {}", + Amount::new(n, self.profile().token_decimals).to_decimal_string(), + self.profile().token_symbol + ); + } + return n.to_string(); + } + format!("{v}") + } + + /// The exact fee for `call` signed by an account of `scheme`: a full + /// extrinsic is assembled with a zeroed signature of the right size and + /// priced by the runtime, so the length component is right. + pub async fn fee_for( + &self, + conn: &ChainConnection, + state: &ChainState, + call: &[u8], + from: [u8; 32], + scheme: SignatureScheme, + nonce: u64, + ) -> Result { + let dummy = ZeroSigner { + scheme, + account: from, + }; + let signed = sign_call( + state, + &RawCall(call.to_vec()), + nonce, + 0, + Mortality::Immortal, + &dummy, + b"", + ) + .map_err(ChainError::Other)?; + let len = signed.bytes.len() as u32; + let mut args = signed.bytes.clone(); + args.extend(len.encode()); + let out = conn + .rpc + .state_call("TransactionPaymentApi_query_info", Some(&args), None) + .await + .map_err(|e| ChainError::Rpc(e.to_string()))?; + let info = RuntimeDispatchInfo::decode(&mut &out[..]) + .map_err(|e| ChainError::Other(format!("fee info: {e}")))?; + Ok(info.partial_fee) + } + + /// Reversible transfers waiting to execute from `account`, with the + /// execution block when the scheduler still knows it. + pub async fn pending_reversible( + &self, + me: [u8; 32], + ) -> Result, ChainError> { + let conn = self.conn()?; + let (storage, _) = super::accounts::storage_at_best(&conn).await?; + let list_addr = subxt::dynamic::storage( + "ReversibleTransfers", + "PendingTransfersBySender", + vec![Value::from_bytes(me)], + ); + // `BoundedVec` decodes as nested composites: the bounded + // wrapper, the vector, then each hash as a struct around a 32-byte + // array. Walk the tree and keep every 32-byte array found. + let ids: Vec<[u8; 32]> = match storage + .fetch(&list_addr) + .await + .map_err(|e| ChainError::Rpc(e.to_string()))? + { + None => vec![], + Some(thunk) => { + let v = thunk + .to_value() + .map_err(|e| ChainError::Other(e.to_string()))?; + let mut found = vec![]; + collect_32_byte_arrays(&v, &mut found); + found + } + }; + let mut out = Vec::with_capacity(ids.len()); + for tx_id in ids { + let addr = subxt::dynamic::storage( + "ReversibleTransfers", + "PendingTransfers", + vec![Value::from_bytes(tx_id)], + ); + let Some(thunk) = storage + .fetch(&addr) + .await + .map_err(|e| ChainError::Rpc(e.to_string()))? + else { + continue; + }; + let v = thunk + .to_value() + .map_err(|e| ChainError::Other(e.to_string()))?; + let get = |k: &str| v.at(k).and_then(as_account_bytes); + let (Some(from), Some(to), Some(guardian)) = (get("from"), get("to"), get("guardian")) + else { + continue; + }; + let amount = v.at("amount").and_then(|a| a.as_u128()).unwrap_or(0); + // `Scheduler::Lookup(task) -> (BlockNumberOrTimestamp, index)`; + // the task name is the tx id itself. + let sched = + subxt::dynamic::storage("Scheduler", "Lookup", vec![Value::from_bytes(tx_id)]); + let (execute_at_block, execute_at_ms) = match storage.fetch(&sched).await { + Ok(Some(thunk)) => thunk + .to_value() + .ok() + .and_then(|v| { + let when = v.at(0)?; + let ValueDef::Variant(var) = &when.value else { + return None; + }; + let n = var + .values + .values() + .next() + .and_then(|x| x.as_u128()) + .map(|x| x as u64)?; + Some(if var.name == "BlockNumber" { + (Some(n), None) + } else { + (None, Some(n)) + }) + }) + .unwrap_or((None, None)), + _ => (None, None), + }; + let p = self.profile(); + out.push(PendingReversible { + tx_id: format!("0x{}", hex::encode(tx_id)), + from: ss58::encode(p.ss58_prefix, &from), + to: ss58::encode(p.ss58_prefix, &to), + guardian: ss58::encode(p.ss58_prefix, &guardian), + amount: Amount::new(amount, p.token_decimals), + execute_at_block, + execute_at_ms, + cancellable_by_me: guardian == me, + }); + } + Ok(out) + } +} + +/// `pallet_transaction_payment::RuntimeDispatchInfo`. +#[derive(Decode)] +struct RuntimeDispatchInfo { + _weight: Weight, + _class: u8, + partial_fee: u128, +} + +#[derive(Decode)] +struct Weight { + #[codec(compact)] + _ref_time: u64, + #[codec(compact)] + _proof_size: u64, +} + +/// Pre-encoded call bytes as a subxt payload. +struct RawCall(Vec); + +impl subxt::tx::Payload for RawCall { + fn encode_call_data_to( + &self, + _metadata: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } +} + +/// A signer whose signature is all zeros of the right size, for pricing. +#[derive(Debug)] +struct ZeroSigner { + scheme: SignatureScheme, + account: [u8; 32], +} + +impl wallet_core::Signer for ZeroSigner { + fn scheme(&self) -> SignatureScheme { + self.scheme + } + fn public_key(&self) -> &[u8] { + match self.scheme { + SignatureScheme::MlDsa65 => { + &ZERO_PK[..qp_rusty_crystals_dilithium::ml_dsa_65::PUBLICKEYBYTES] + } + SignatureScheme::MlDsa87 => { + &ZERO_PK[..qp_rusty_crystals_dilithium::ml_dsa_87::PUBLICKEYBYTES] + } + } + } + fn account_id(&self) -> [u8; 32] { + self.account + } + fn sign(&self, _message: &[u8], _context: &[u8]) -> Result, wallet_core::KeyError> { + Ok(match self.scheme { + SignatureScheme::MlDsa65 => { + vec![0u8; qp_rusty_crystals_dilithium::ml_dsa_65::SIGNBYTES] + } + SignatureScheme::MlDsa87 => { + vec![0u8; qp_rusty_crystals_dilithium::ml_dsa_87::SIGNBYTES] + } + }) + } +} + +static ZERO_PK: [u8; DILITHIUM87_WIRE_LEN] = [0u8; DILITHIUM87_WIRE_LEN]; +const _: () = assert!(DILITHIUM65_WIRE_LEN < DILITHIUM87_WIRE_LEN); + +/// Every 32-byte array in a decoded value, depth first. +fn collect_32_byte_arrays(v: &Value, out: &mut Vec<[u8; 32]>) { + if let Some(bytes) = as_account_bytes(v) { + out.push(bytes); + return; + } + match &v.value { + ValueDef::Composite(c) => c.values().for_each(|x| collect_32_byte_arrays(x, out)), + ValueDef::Variant(var) => var + .values + .values() + .for_each(|x| collect_32_byte_arrays(x, out)), + _ => {} + } +} + +/// A 32-byte account id shows up as a composite of 32 small integers. +fn as_account_bytes(v: &Value) -> Option<[u8; 32]> { + let ValueDef::Composite(c) = &v.value else { + return None; + }; + if c.len() == 1 { + return as_account_bytes(c.values().next()?); + } + if c.len() != 32 { + return None; + } + let mut out = [0u8; 32]; + for (i, x) in c.values().enumerate() { + match &x.value { + ValueDef::Primitive(Primitive::U128(n)) if *n <= 255 => out[i] = *n as u8, + _ => return None, + } + } + Some(out) +} + +fn delay_value(blocks: u64) -> Value { + Value::unnamed_variant("BlockNumber", [Value::u128(u128::from(blocks))]) +} + +#[async_trait] +impl ChainAdapter for SubstrateAdapter { + fn chain(&self) -> ChainId { + self.profile().id.clone() + } + + fn assets(&self) -> Vec { + vec![AssetInfo { + id: self.native_asset(), + symbol: self.profile().token_symbol.clone(), + decimals: self.profile().token_decimals, + }] + } + + fn address_for( + &self, + _scheme: SignatureScheme, + public_key: &[u8], + ) -> Result { + Ok(ss58::encode( + self.profile().ss58_prefix, + &account_id(public_key), + )) + } + + async fn balance(&self, account: &AccountRef, asset: &AssetId) -> Result { + if asset.kind != AssetKind::Native { + return Err(ChainError::Unsupported("only the native asset".into())); + } + let conn = self.conn()?; + let who = self.parse_address(&account.address)?; + let info = account_info(&conn, who).await?; + Ok(Amount::new( + info.balance.spendable(), + self.profile().token_decimals, + )) + } + + async fn prepare( + &self, + from: &AccountRef, + intent: &TransferIntent, + ) -> Result { + let conn = self.conn()?; + let state = conn.chain_state(); + let me = self.parse_address(&from.address)?; + let info = account_info(&conn, me).await?; + + let call = match intent { + TransferIntent::Transfer { + asset, + to, + amount, + reversible_for, + } => { + if asset.kind != AssetKind::Native { + return Err(ChainError::Unsupported("only the native asset".into())); + } + let dest = self.parse_address(to)?; + let dest_v = Value::unnamed_variant("Id", [Value::from_bytes(dest)]); + match (reversible_for, &info.high_security) { + // A high-security account may only send through the pallet, + // with its configured delay; the chain refuses anything else. + (_, Some(_)) => subxt::dynamic::tx( + "ReversibleTransfers", + "schedule_transfer", + vec![dest_v, Value::u128(amount.raw)], + ), + (Some(blocks), None) => subxt::dynamic::tx( + "ReversibleTransfers", + "schedule_transfer_with_delay", + vec![dest_v, Value::u128(amount.raw), delay_value(*blocks)], + ), + (None, None) => subxt::dynamic::tx( + "Balances", + "transfer_keep_alive", + vec![dest_v, Value::u128(amount.raw)], + ), + } + } + TransferIntent::CancelReversible { tx_id } => subxt::dynamic::tx( + "ReversibleTransfers", + "cancel", + vec![Value::from_bytes(*tx_id)], + ), + }; + let call_data = conn + .client + .tx() + .call_data(&call) + .map_err(|e| ChainError::Other(format!("encode call: {e}")))?; + let summary = self.decode_call(&state, &call_data)?; + + let nonce = super::accounts::next_nonce(&conn, me).await?; + let fee_raw = self + .fee_for(&conn, &state, &call_data, me, from.scheme, nonce) + .await?; + + // Mortal from the *best* block, not the finalized one. The era's birth + // block is computed from its phase modulo the period, and the runtime + // looks that block's hash up in `System::BlockHash` at validation + // time. On a proof-of-work chain finality trails the tip by dozens + // of blocks, so an era anchored at the finalized head names a birth + // block the runtime resolves to a different hash: "bad signature". + let header = conn + .rpc + .chain_get_header(None) + .await + .map_err(|e| ChainError::Rpc(e.to_string()))? + .ok_or_else(|| ChainError::Rpc("no best header".into()))?; + let best_hash = conn + .rpc + .chain_get_block_hash(Some(u64::from(header.number).into())) + .await + .map_err(|e| ChainError::Rpc(e.to_string()))? + .ok_or_else(|| ChainError::Rpc("best block has no hash".into()))?; + let mortal_from = (u64::from(header.number), best_hash.0); + + // The signing payload, with the real signer's account and a zero + // signature to size it; the payload does not depend on the signature. + let dummy = ZeroSigner { + scheme: from.scheme, + account: me, + }; + let mortality = Mortality::Mortal { + for_blocks: MORTALITY_BLOCKS, + from_number: mortal_from.0, + from_hash: H256(mortal_from.1), + }; + let built = sign_call( + &state, + &RawCall(call_data.clone()), + nonce, + 0, + mortality, + &dummy, + b"", + ) + .map_err(ChainError::Other)?; + let signing_context = + wallet_core::profiles::signing_context_for(self.profile(), state.spec_version).to_vec(); + + Ok(PreparedTransaction { + chain: self.chain(), + from: me, + scheme: from.scheme, + call_data, + summary, + fee: Amount::new(fee_raw, self.profile().token_decimals), + nonce, + mortal_from, + mortal_for: MORTALITY_BLOCKS, + signing_payload: built.signer_payload, + signing_context, + spec_version: state.spec_version, + }) + } + + async fn submit( + &self, + prepared: &PreparedTransaction, + signed: SignedBy, + ) -> Result<([u8; 32], mpsc::Receiver), ChainError> { + let conn = self.conn()?; + let state = conn.chain_state(); + if state.spec_version != prepared.spec_version { + return Err(ChainError::Other(format!( + "the runtime upgraded from spec {} to {} since this transaction was prepared; prepare it again", + prepared.spec_version, state.spec_version + ))); + } + if account_id(&signed.public_key) != prepared.from { + return Err(ChainError::Other( + "the signature's public key is not the sender's".into(), + )); + } + let signature = + DilithiumSignature::from_parts(signed.scheme, &signed.signature, &signed.public_key) + .map_err(ChainError::Other)?; + let client = conn.client.clone(); + let params = + subxt::config::DefaultExtrinsicParamsBuilder::::new() + .nonce(prepared.nonce) + .mortal_from_unchecked( + prepared.mortal_for, + prepared.mortal_from.0, + H256(prepared.mortal_from.1), + ) + .build(); + let mut partial = client + .tx() + .create_partial_offline(&RawCall(prepared.call_data.clone()), params) + .map_err(|e| ChainError::Other(e.to_string()))?; + if partial.signer_payload() != prepared.signing_payload { + return Err(ChainError::Other( + "the signing payload no longer matches; prepare again".into(), + )); + } + let submittable = + partial.sign_with_account_and_signature(&AccountId32(prepared.from), &signature); + let hash = submittable.hash().0; + let mut progress = submittable + .submit_and_watch() + .await + .map_err(|e| ChainError::Rpc(format!("{e:?}")))?; + let (tx, rx) = mpsc::channel(16); + tokio::spawn(async move { + let _ = tx.send(TxStatus::Submitted).await; + while let Some(status) = progress.next().await { + let out = match status { + // A dispatch error is knowable as soon as the block is + // seen; do not make the person wait for finality to + // learn their transfer failed. + Ok(SubxtTxStatus::InBestBlock(b)) => match b.wait_for_success().await { + Ok(_) => TxStatus::InBlock { + block: b.block_hash().0, + }, + Err(e) => TxStatus::Failed { + block: Some(b.block_hash().0), + reason: describe_error(&e), + }, + }, + Ok(SubxtTxStatus::InFinalizedBlock(b)) => match b.wait_for_success().await { + Ok(_) => TxStatus::Finalized { + block: b.block_hash().0, + }, + Err(e) => TxStatus::Failed { + block: Some(b.block_hash().0), + reason: describe_error(&e), + }, + }, + Ok(SubxtTxStatus::Error { message }) => TxStatus::Dropped { reason: message }, + Ok(SubxtTxStatus::Invalid { message }) => TxStatus::Dropped { + reason: format!("invalid: {message}"), + }, + Ok(SubxtTxStatus::Dropped { message }) => TxStatus::Dropped { + reason: format!("dropped: {message}"), + }, + Ok(_) => continue, + Err(e) => TxStatus::Dropped { + reason: e.to_string(), + }, + }; + let terminal = !matches!(out, TxStatus::InBlock { .. }); + let _ = tx.send(out).await; + if terminal { + break; + } + } + }); + Ok((hash, rx)) + } +} + +/// A dispatch error as a name a person can look up: `Pallet::Variant` for +/// module errors, the enum's own wording otherwise. +fn describe_error(e: &subxt::Error) -> String { + match e { + subxt::Error::Runtime(subxt::error::DispatchError::Module(m)) => match m.details() { + Ok(d) => format!("{}::{}", d.pallet.name(), d.variant.name), + Err(_) => m.details_string(), + }, + subxt::Error::Runtime(other) => format!("{other:?}"), + other => other.to_string(), + } +} + +#[cfg(test)] +mod tests { + use super::super::offline::transfer_keep_alive; + use super::*; + use wallet_core::profiles::ProfileRegistry; + + fn mainnet_state() -> ChainState { + let bytes = std::fs::read(concat!( + env!("CARGO_MANIFEST_DIR"), + "/tests/fixtures/metadata/quantus-mainnet.scale" + )) + .unwrap(); + ChainState::from_metadata_bytes([0xfb; 32], 152, 6, &bytes).unwrap() + } + + fn adapter_for(id: &str) -> SubstrateAdapter { + // A manager that never connects (dead endpoint) is enough for the + // pure parts: the profile, decoding, rendering. + let mut p = ProfileRegistry::shipped() + .unwrap() + .get(&ChainId(id.into())) + .unwrap() + .clone(); + p.endpoints = vec!["ws://127.0.0.1:1".into()]; + SubstrateAdapter::new(ChainManager::start(p)) + } + + #[tokio::test] + async fn decodes_a_transfer_call_into_a_summary_a_person_can_check() { + let a = adapter_for("quantus"); + let state = mainnet_state(); + let dest = ss58::decode("qzq29m9WvneDAeXbtgueKCREtNe1rVVs6bXSMLmjr6shqvwq6") + .unwrap() + .1; + let call = transfer_keep_alive(dest, 1_234_500_000_000); + let client = subxt::OfflineClient::::new( + state.genesis_hash, + subxt::client::RuntimeVersion { + spec_version: 152, + transaction_version: 6, + }, + state.metadata.clone(), + ); + let bytes = client.tx().call_data(&call).unwrap(); + { + let ty = state.metadata.outer_enums().call_enum_ty(); + let v = scale_value::scale::decode_as_type(&mut &bytes[..], ty, state.metadata.types()) + .unwrap(); + eprintln!("STRUCTURE {v:?}"); + } + let summary = a.decode_call(&state, &bytes).unwrap(); + assert_eq!(summary.pallet, "Balances"); + assert_eq!(summary.call, "transfer_keep_alive"); + assert_eq!(summary.fields.len(), 2); + assert_eq!(summary.fields[0].name, "dest"); + assert_eq!( + summary.fields[0].value, + "qzq29m9WvneDAeXbtgueKCREtNe1rVVs6bXSMLmjr6shqvwq6" + ); + assert_eq!(summary.fields[1].name, "value"); + assert_eq!(summary.fields[1].value, "1.2345 QTC"); + + // Trailing bytes are a refusal, not a warning. + let mut longer = bytes.clone(); + longer.push(0); + assert!(a.decode_call(&state, &longer).is_err()); + + // A reversible schedule renders its delay. + let call = subxt::dynamic::tx( + "ReversibleTransfers", + "schedule_transfer_with_delay", + vec![ + Value::unnamed_variant("Id", [Value::from_bytes(dest)]), + Value::u128(5_000_000_000_000), + delay_value(300), + ], + ); + let bytes = client.tx().call_data(&call).unwrap(); + let summary = a.decode_call(&state, &bytes).unwrap(); + assert_eq!( + (summary.pallet.as_str(), summary.call.as_str()), + ("ReversibleTransfers", "schedule_transfer_with_delay") + ); + assert_eq!(summary.fields[1].value, "5 QTC"); + assert!( + summary.fields[2].value.contains("300"), + "{}", + summary.fields[2].value + ); + } + + #[tokio::test] + async fn refuses_a_foreign_address_by_name() { + let a = adapter_for("quantus"); + let err = a + .parse_address("15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5") + .unwrap_err() + .to_string(); + assert!( + err.contains("prefix 0") && err.contains("not a Quantus address"), + "{err}" + ); + assert!( + a.parse_address("qzq29m9WvneDAeXbtgueKCREtNe1rVVs6bXSMLmjr6shqvwq6") + .is_ok() + ); + assert!( + a.parse_address("not an address") + .unwrap_err() + .to_string() + .contains("not base58") + ); + } + + /// Live, against `quantus-node --dev` at `WALLET_DEV_NODE`: the whole + /// send path with the funded dev accounts. Sends from crystal_alice to + /// crystal_bob and watches to finality; schedules a reversible transfer, + /// finds it pending, cancels it; and asks for more than alice has to see + /// the failure decoded to a name. + #[tokio::test] + #[ignore = "needs a dev node; set WALLET_DEV_NODE=ws://127.0.0.1:9944"] + async fn sends_reverses_and_fails_by_name_on_a_dev_node() { + use crate::keystore::FileKeystore; + use std::time::Duration; + use wallet_core::Keystore; + + let url = std::env::var("WALLET_DEV_NODE").expect("WALLET_DEV_NODE"); + let mut profile = ProfileRegistry::shipped() + .unwrap() + .get(&ChainId("dev".into())) + .unwrap() + .clone(); + profile.endpoints = vec![url]; + let manager = ChainManager::start(profile.clone()); + let deadline = std::time::Instant::now() + Duration::from_secs(60); + while !manager.status().connected && std::time::Instant::now() < deadline { + tokio::time::sleep(Duration::from_millis(250)).await; + } + assert!(manager.status().connected, "{:?}", manager.status()); + let adapter = SubstrateAdapter::new(manager.clone()); + + let ks = FileKeystore::in_dir(concat!( + env!("CARGO_MANIFEST_DIR"), + "/tests/fixtures/cli-wallets" + )); + let alice = ks.open("crystal_alice", "").unwrap(); + let bob = ks.open("crystal_bob", "").unwrap(); + let alice_ref = AccountRef { + chain: profile.id.clone(), + address: alice.summary.address.clone(), + scheme: alice.signer.scheme(), + }; + let native = AssetId { + chain: profile.id.clone(), + kind: AssetKind::Native, + }; + let bob_ref = AccountRef { + chain: profile.id.clone(), + address: bob.summary.address.clone(), + scheme: bob.signer.scheme(), + }; + let alice_id = alice.signer.account_id(); + + let sign = |p: &PreparedTransaction, signer: &dyn wallet_core::Signer| SignedBy { + scheme: signer.scheme(), + public_key: signer.public_key().to_vec(), + signature: signer.sign(&p.signing_payload, &p.signing_context).unwrap(), + }; + /// Collect statuses until the transaction is in a block or has + /// failed. Finality here trails the tip by a hundred blocks, and + /// balances are read at the best block, so inclusion is the gate. + async fn until_included(mut rx: mpsc::Receiver) -> Vec { + let mut seen = vec![]; + while let Some(s) = rx.recv().await { + let stop = !matches!(s, TxStatus::Submitted); + seen.push(s); + if stop { + break; + } + } + seen + } + async fn settle() { + tokio::time::sleep(Duration::from_secs(3)).await; + } + + // 1. A plain transfer, watched to finality; bob's balance moves. + let bob_before = adapter.balance(&bob_ref, &native).await.unwrap().raw; + let amount = Amount::new(3_000_000_000_000, 12); + let prepared = adapter + .prepare( + &alice_ref, + &TransferIntent::Transfer { + asset: native.clone(), + to: bob_ref.address.clone(), + amount, + reversible_for: None, + }, + ) + .await + .unwrap(); + assert_eq!(prepared.summary.pallet, "Balances"); + assert_eq!(prepared.summary.fields[1].value, "3 DEV"); + assert!(prepared.fee.raw > 0, "fee {:?}", prepared.fee); + assert_eq!(prepared.signing_context, b"QUANTUS_EXTRINSIC"); + eprintln!( + "fee for a plain transfer: {} DEV", + prepared.fee.to_decimal_string() + ); + let (hash, rx) = adapter + .submit(&prepared, sign(&prepared, alice.signer.as_ref())) + .await + .unwrap(); + let seen = until_included(rx).await; + eprintln!("tx 0x{}: {seen:?}", hex::encode(hash)); + assert!( + matches!(seen.last(), Some(TxStatus::InBlock { .. })), + "{seen:?}" + ); + settle().await; + let bob_after = adapter.balance(&bob_ref, &native).await.unwrap().raw; + assert_eq!(bob_after - bob_before, amount.raw); + + // 2. A reversible transfer: pending, then cancelled, funds back. + // Earlier runs may have left pending entries; track the one this + // run creates. + let before: Vec = adapter + .pending_reversible(alice_id) + .await + .unwrap() + .into_iter() + .map(|p| p.tx_id) + .collect(); + let alice_before = adapter.balance(&alice_ref, &native).await.unwrap().raw; + let prepared = adapter + .prepare( + &alice_ref, + &TransferIntent::Transfer { + asset: native.clone(), + to: bob_ref.address.clone(), + amount, + reversible_for: Some(200), + }, + ) + .await + .unwrap(); + assert_eq!( + ( + prepared.summary.pallet.as_str(), + prepared.summary.call.as_str() + ), + ("ReversibleTransfers", "schedule_transfer_with_delay") + ); + let (_, rx) = adapter + .submit(&prepared, sign(&prepared, alice.signer.as_ref())) + .await + .unwrap(); + let seen = until_included(rx).await; + assert!( + matches!(seen.last(), Some(TxStatus::InBlock { .. })), + "{seen:?}" + ); + settle().await; + let pending = adapter.pending_reversible(alice_id).await.unwrap(); + eprintln!("pending: {pending:?}"); + let mine = pending + .iter() + .find(|p| !before.contains(&p.tx_id)) + .expect("the transfer this run scheduled is pending"); + assert_eq!(mine.to, bob_ref.address); + assert!(mine.cancellable_by_me); + assert!( + mine.execute_at_block.is_some() || mine.execute_at_ms.is_some(), + "scheduler lookup: {mine:?}" + ); + let tx_id: [u8; 32] = hex::decode(mine.tx_id.trim_start_matches("0x")) + .unwrap() + .try_into() + .unwrap(); + let mine_id = mine.tx_id.clone(); + let prepared = adapter + .prepare(&alice_ref, &TransferIntent::CancelReversible { tx_id }) + .await + .unwrap(); + assert_eq!(prepared.summary.call, "cancel"); + let (_, rx) = adapter + .submit(&prepared, sign(&prepared, alice.signer.as_ref())) + .await + .unwrap(); + let seen = until_included(rx).await; + eprintln!("cancel: {seen:?}"); + assert!( + matches!(seen.last(), Some(TxStatus::InBlock { .. })), + "{seen:?}" + ); + settle().await; + let after = adapter.pending_reversible(alice_id).await.unwrap(); + eprintln!("after cancel: {after:?}"); + assert!( + after.iter().all(|p| p.tx_id != mine_id), + "cancelled transfer still pending" + ); + let alice_after = adapter.balance(&alice_ref, &native).await.unwrap().raw; + assert!( + alice_before - alice_after < 1_000_000_000_000, + "only fees left alice: {alice_before} -> {alice_after}" + ); + + // 3. More than alice has: a named failure, not a hex code. + let too_much = Amount::new(alice_after.saturating_mul(2).max(1), 12); + let prepared = adapter + .prepare( + &alice_ref, + &TransferIntent::Transfer { + asset: native.clone(), + to: bob_ref.address.clone(), + amount: too_much, + reversible_for: None, + }, + ) + .await + .unwrap(); + let (_, rx) = adapter + .submit(&prepared, sign(&prepared, alice.signer.as_ref())) + .await + .unwrap(); + let seen = until_included(rx).await; + eprintln!("overspend: {seen:?}"); + match seen.last() { + Some(TxStatus::Failed { reason, .. }) => assert!( + reason.chars().any(|c| c.is_ascii_alphabetic()) && !reason.starts_with("0x"), + "{reason}" + ), + Some(TxStatus::Dropped { reason }) => assert!( + reason.to_lowercase().contains("pay") || reason.to_lowercase().contains("balance"), + "{reason}" + ), + other => panic!("expected a failure, got {other:?}"), + } + } + + /// Probe: which (scheme, era) combinations the dev node accepts. + #[tokio::test] + #[ignore = "needs a dev node"] + async fn probe_scheme_and_era_on_dev_node() { + use super::super::offline::{Mortality, sign_call, transfer_keep_alive}; + use crate::keystore::FileKeystore; + use wallet_core::Keystore; + let url = std::env::var("WALLET_DEV_NODE").expect("WALLET_DEV_NODE"); + let mut profile = ProfileRegistry::shipped() + .unwrap() + .get(&ChainId("dev".into())) + .unwrap() + .clone(); + profile.endpoints = vec![url]; + let conn = super::super::connection::connect_endpoint(&profile, &profile.endpoints[0]) + .await + .unwrap(); + let state = conn.chain_state(); + let ks = FileKeystore::in_dir(concat!( + env!("CARGO_MANIFEST_DIR"), + "/tests/fixtures/cli-wallets" + )); + let alice = ks.open("crystal_alice", "").unwrap(); + let seed = crate::keys::seed_from_mnemonic( + "bottom drive obey lake curtain smoke basket hold race lonely fit walk", + None, + ) + .unwrap(); + let dev65 = ::derive( + &crate::keys::MlDsa::ml_dsa_65(), + &seed, + "m/44'/189189'/0'/0'/1'", + ) + .unwrap(); + let dev87 = ::derive( + &crate::keys::MlDsa::ml_dsa_87(), + &seed, + "m/44'/189189'/0'/0'/0'", + ) + .unwrap(); + let head = conn.rpc.chain_get_finalized_head().await.unwrap(); + let header = conn + .rpc + .chain_get_header(Some(head)) + .await + .unwrap() + .unwrap(); + let signers: Vec<(&str, &dyn wallet_core::Signer)> = vec![ + ("alice-87", alice.signer.as_ref()), + ("dev-65", dev65.as_ref()), + ("dev-87", dev87.as_ref()), + ]; + for (name, signer) in signers { + for (era, m) in [ + ("immortal", Mortality::Immortal), + ( + "mortal", + Mortality::Mortal { + for_blocks: 64, + from_number: u64::from(header.number), + from_hash: head, + }, + ), + ] { + let nonce = super::super::accounts::next_nonce(&conn, signer.account_id()) + .await + .unwrap(); + let signed = sign_call( + &state, + &transfer_keep_alive([9; 32], 1), + nonce, + 0, + m, + signer, + b"QUANTUS_EXTRINSIC", + ) + .unwrap(); + let r = conn + .rpc + .author_submit_extrinsic(&signed.bytes) + .await + .map(|h| format!("ok {h:?}")) + .unwrap_or_else(|e| format!("{e:?}")); + eprintln!( + "PROBE {name} {era} payload_len={} -> {}", + signed.signer_payload.len(), + r.chars().take(160).collect::() + ); + } + } + } +} + +#[cfg(test)] +mod probes { + /// Print the non-boilerplate events of the last forty blocks on the dev + /// node, for diagnosing a call that was included but did not do what + /// was expected. + #[tokio::test] + #[ignore = "needs a dev node"] + async fn recent_events() { + use super::super::config::QuantusConfig; + let url = std::env::var("WALLET_DEV_NODE").unwrap(); + let client = subxt::OnlineClient::::from_insecure_url(&url) + .await + .unwrap(); + let best = client.blocks().at_latest().await.unwrap(); + let mut hash = best.hash(); + for _ in 0..40 { + let block = client.blocks().at(hash).await.unwrap(); + let events = block.events().await.unwrap(); + for ev in events.iter() { + let ev = ev.unwrap(); + let boring = matches!( + ev.pallet_name(), + "ZkTree" + | "Wormhole" + | "MiningRewards" + | "QPoW" + | "TransactionPayment" + | "Timestamp" + ) || (ev.pallet_name() == "Balances" + && ev.variant_name() != "Transfer") + || (ev.pallet_name() == "System" && ev.variant_name() == "ExtrinsicSuccess"); + if !boring { + let fields = ev + .field_values() + .map(|v| format!("{v}")) + .unwrap_or_default(); + let fields: String = fields.chars().take(400).collect(); + eprintln!( + "EVENT #{} {}::{} {}", + block.number(), + ev.pallet_name(), + ev.variant_name(), + fields + ); + } + } + hash = block.header().parent_hash; + } + } +} diff --git a/crates/wallet-data/src/substrate/connection.rs b/crates/wallet-data/src/substrate/connection.rs index c6f8a08..b41b391 100644 --- a/crates/wallet-data/src/substrate/connection.rs +++ b/crates/wallet-data/src/substrate/connection.rs @@ -123,6 +123,7 @@ struct Observed { endpoint: Option, spec_version: Option, transaction_version: Option, + best_number: Option, finalized_number: Option, last_head: Option, last_error: Option, @@ -217,9 +218,9 @@ impl ChainManager { }) } - /// A receiver that changes on every finalized head. Starts at 0 until + /// A receiver that changes on every best head. Starts at 0 until /// the first head arrives. - pub fn finalized_heads(&self) -> tokio::sync::watch::Receiver { + pub fn best_heads(&self) -> tokio::sync::watch::Receiver { self.shared.heads.subscribe() } @@ -231,6 +232,7 @@ impl ChainManager { endpoint: o.endpoint, spec_version: o.spec_version, transaction_version: o.transaction_version, + best_number: o.best_number, finalized_number: o.finalized_number, head_age_seconds: o.last_head.map(|t| t.elapsed().as_secs()), last_error: o.last_error, @@ -259,14 +261,19 @@ impl Shared { o.failures = o.failures.saturating_add(1); } - fn note_head(&self, number: u64) { + fn note_best(&self, number: u64) { let mut o = self.observed.write().expect("observed lock"); - o.finalized_number = Some(number); + o.best_number = Some(number); o.last_head = Some(Instant::now()); drop(o); let _ = self.heads.send(number); } + fn note_finalized(&self, number: u64) { + let mut o = self.observed.write().expect("observed lock"); + o.finalized_number = Some(number); + } + fn note_runtime(&self, spec_version: u32, transaction_version: u32) { let mut o = self.observed.write().expect("observed lock"); o.spec_version = Some(spec_version); @@ -274,32 +281,66 @@ impl Shared { } } -/// Follow finalized heads and runtime upgrades until something breaks. +/// Follow best and finalized heads and runtime upgrades until something +/// breaks. /// Returns why it stopped. async fn follow(weak: &std::sync::Weak, conn: &ChainConnection) -> String { + let mut best = match conn.client.blocks().subscribe_best().await { + Ok(s) => s, + Err(e) => return format!("subscribe best: {e}"), + }; let mut heads = match conn.client.blocks().subscribe_finalized().await { Ok(s) => s, Err(e) => return format!("subscribe finalized: {e}"), }; // subxt's updater swaps metadata and runtime version inside the client - // when the chain upgrades; we only need to notice and record it. + // when the chain upgrades. Its subscription has been seen to die on a + // proof-of-work node with "header not found" after a reorg, so it is + // advisory: if it breaks, runtime versions are polled on each head + // instead, and a change forces a reconnect, which refetches metadata. let updater = conn.client.updater(); let mut upgrades = match updater.runtime_updates().await { - Ok(s) => s, - Err(e) => return format!("subscribe runtime updates: {e}"), + Ok(s) => Some(s), + Err(e) => { + tracing::warn!(error = %e, "runtime update subscription unavailable; polling instead"); + None + } }; + let connected_spec = conn.client.runtime_version().spec_version; + let mut heads_seen: u64 = 0; let stale = Duration::from_secs(120); loop { tokio::select! { + head = best.next() => match head { + Some(Ok(block)) => { + let Some(shared) = weak.upgrade() else { return "manager dropped".into() }; + shared.note_best(u64::from(block.number())); + heads_seen += 1; + if upgrades.is_none() && heads_seen % 10 == 0 { + if let Ok(rv) = conn.rpc.state_get_runtime_version(None).await { + if rv.spec_version != connected_spec { + return format!("runtime upgraded from spec {connected_spec} to {}; reconnecting", rv.spec_version); + } + } + } + } + Some(Err(e)) => return format!("best stream: {e}"), + None => return "best stream ended".into(), + }, head = heads.next() => match head { Some(Ok(block)) => { let Some(shared) = weak.upgrade() else { return "manager dropped".into() }; - shared.note_head(u64::from(block.number())); + shared.note_finalized(u64::from(block.number())); } Some(Err(e)) => return format!("finalized stream: {e}"), None => return "finalized stream ended".into(), }, - update = upgrades.next() => match update { + update = async { + match upgrades.as_mut() { + Some(u) => u.next().await, + None => std::future::pending().await, + } + } => match update { Some(Ok(update)) => { let version = *update.runtime_version(); match updater.apply_update(update) { @@ -311,8 +352,11 @@ async fn follow(weak: &std::sync::Weak, conn: &ChainConnection) -> Strin Err(e) => tracing::warn!(error = ?e, "runtime update not applied"), } } - Some(Err(e)) => return format!("runtime updates stream: {e}"), - None => return "runtime updates stream ended".into(), + Some(Err(e)) => { + tracing::warn!(error = %e, "runtime update subscription broke; polling instead"); + upgrades = None; + } + None => upgrades = None, }, _ = tokio::time::sleep(stale) => return format!("no finalized head for {}s", stale.as_secs()), } diff --git a/crates/wallet-data/src/substrate/mod.rs b/crates/wallet-data/src/substrate/mod.rs index 112bb03..a311c71 100644 --- a/crates/wallet-data/src/substrate/mod.rs +++ b/crates/wallet-data/src/substrate/mod.rs @@ -4,11 +4,13 @@ //! the chain profile's context and never by subxt itself. pub mod accounts; +pub mod adapter; pub mod config; pub mod connection; pub mod offline; pub use accounts::{AccountInfo, Balance, HighSecurity, account_info, next_nonce}; +pub use adapter::SubstrateAdapter; pub use config::{DilithiumSignature, QuantusConfig}; pub use connection::{ChainConnection, ChainManager}; pub use offline::{ChainState, SignedExtrinsic, sign_call}; diff --git a/crates/wallet-data/tests/fixtures/cli-wallets/crystal_alice.json b/crates/wallet-data/tests/fixtures/cli-wallets/crystal_alice.json new file mode 100644 index 0000000..c87d52b --- /dev/null +++ b/crates/wallet-data/tests/fixtures/cli-wallets/crystal_alice.json @@ -0,0 +1,26572 @@ +{ + "name": "crystal_alice", + "address": "qzk1Nxai3dZD9Cn5kwGcgL6mKxsfxwqdis7kDQJ52aJS2vSn7", + "wallet_type": "hot", + "encrypted_data": [ + 202, + 58, + 221, + 54, + 26, + 51, + 108, + 203, + 29, + 94, + 63, + 244, + 66, + 134, + 212, + 157, + 26, + 154, + 57, + 112, + 60, + 237, + 1, + 197, + 239, + 206, + 131, + 228, + 109, + 29, + 87, + 84, + 77, + 16, + 132, + 238, + 141, + 39, + 232, + 148, + 110, + 58, + 68, + 116, + 25, + 203, + 124, + 118, + 16, + 208, + 254, + 144, + 39, + 122, + 33, + 45, + 21, + 150, + 12, + 53, + 193, + 94, + 52, + 155, + 152, + 112, + 63, + 246, + 64, + 79, + 68, + 67, + 186, + 153, + 12, + 17, + 163, + 254, + 18, + 142, + 122, + 187, + 233, + 251, + 132, + 46, + 117, + 50, + 242, + 200, + 221, + 64, + 102, + 59, + 227, + 41, + 102, + 132, + 221, + 195, + 201, + 88, + 174, + 205, + 214, + 221, + 102, + 83, + 114, + 8, + 160, + 217, + 157, + 1, + 238, + 33, + 166, + 249, + 24, + 0, + 203, + 137, + 62, + 116, + 121, + 250, + 110, + 67, + 108, + 77, + 100, + 206, + 199, + 39, + 203, + 113, + 91, + 150, + 109, + 143, + 65, + 132, + 193, + 132, + 143, + 48, + 77, + 38, + 198, + 45, + 189, + 142, + 199, + 59, + 73, + 144, + 143, + 181, + 152, + 174, + 11, + 35, + 32, + 53, + 142, + 22, + 154, + 195, + 234, + 239, + 255, + 147, + 62, + 76, + 97, + 166, + 109, + 28, + 211, + 190, + 21, + 70, + 171, + 26, + 131, + 32, + 220, + 99, + 88, + 75, + 212, + 72, + 173, + 143, + 134, + 149, + 121, + 81, + 192, + 51, + 57, + 202, + 245, + 161, + 174, + 51, + 42, + 82, + 57, + 165, + 37, + 24, + 29, + 201, + 245, + 54, + 94, + 218, + 177, + 229, + 93, + 144, + 38, + 199, + 99, + 158, + 70, + 166, + 248, + 73, + 122, + 147, + 34, + 123, + 107, + 163, + 160, + 32, + 196, + 184, + 119, + 185, + 93, + 65, + 12, + 127, + 105, + 77, + 6, + 43, + 138, + 214, + 181, + 170, + 57, + 181, + 244, + 6, + 253, + 196, + 238, + 127, + 68, + 181, + 233, + 1, + 142, + 237, + 0, + 69, + 44, + 6, + 209, + 6, + 239, + 42, + 3, + 45, + 183, + 118, + 20, + 26, + 142, + 136, + 212, + 28, + 33, + 125, + 168, + 242, + 160, + 29, + 231, + 154, + 38, + 113, + 81, + 140, + 82, + 235, + 99, + 0, + 69, + 155, + 165, + 236, + 171, + 85, + 143, + 113, + 159, + 242, + 32, + 105, + 241, + 65, + 108, + 125, + 210, + 244, + 117, + 63, + 128, + 126, + 26, + 97, + 181, + 99, + 169, + 119, + 14, + 18, + 52, + 72, + 231, + 133, + 38, + 131, + 105, + 145, + 84, + 180, + 65, + 233, + 176, + 247, + 53, + 122, + 125, + 184, + 150, + 175, + 48, + 124, + 6, + 103, + 89, + 17, + 124, + 29, + 94, + 246, + 36, + 47, + 194, + 225, + 250, + 177, + 241, + 91, + 218, + 186, + 137, + 6, + 35, + 116, + 187, + 149, + 121, + 9, + 2, + 206, + 89, + 66, + 254, + 69, + 100, + 95, + 79, + 125, + 83, + 189, + 172, + 38, + 136, + 1, + 188, + 182, + 122, + 238, + 232, + 130, + 89, + 10, + 174, + 144, + 85, + 98, + 29, + 215, + 15, + 105, + 2, + 164, + 171, + 37, + 252, + 75, + 243, + 124, + 217, + 78, + 253, + 159, + 129, + 249, + 9, + 12, + 182, + 183, + 169, + 212, + 234, + 23, + 198, + 193, + 232, + 108, + 16, + 213, + 201, + 230, + 45, + 228, + 100, + 199, + 191, + 214, + 10, + 78, + 55, + 66, + 141, + 141, + 222, + 38, + 73, + 158, + 34, + 149, + 203, + 119, + 3, + 186, + 63, + 51, + 149, + 42, + 208, + 213, + 116, + 198, + 233, + 0, + 56, + 21, + 69, + 202, + 41, + 147, + 252, + 239, + 1, + 142, + 53, + 206, + 121, + 71, + 123, + 87, + 166, + 223, + 254, + 21, + 246, + 150, + 86, + 152, + 228, + 79, + 17, + 114, + 6, + 3, + 60, + 108, + 243, + 216, + 4, + 125, + 178, + 172, + 146, + 199, + 185, + 37, + 44, + 59, + 45, + 237, + 201, + 38, + 231, + 188, + 160, + 182, + 188, + 193, + 142, + 103, + 44, + 187, + 36, + 121, + 31, + 2, + 134, + 160, + 79, + 42, + 64, + 227, + 56, + 119, + 65, + 107, + 7, + 244, + 224, + 134, + 162, + 32, + 146, + 103, + 101, + 167, + 176, + 236, + 69, + 63, + 147, + 124, + 31, + 96, + 140, + 180, + 145, + 94, + 9, + 9, + 35, + 177, + 95, + 106, + 141, + 166, + 9, + 86, + 237, + 155, + 192, + 213, + 89, + 131, + 206, + 19, + 41, + 179, + 24, + 0, + 173, + 135, + 41, + 171, + 82, + 78, + 79, + 169, + 151, + 200, + 12, + 54, + 98, + 157, + 214, + 164, + 199, + 80, + 29, + 111, + 78, + 95, + 207, + 89, + 68, + 120, + 197, + 244, + 174, + 72, + 37, + 79, + 227, + 126, + 58, + 173, + 105, + 194, + 119, + 59, + 205, + 100, + 51, + 223, + 191, + 163, + 75, + 248, + 128, + 1, + 195, + 194, + 139, + 110, + 34, + 224, + 106, + 148, + 183, + 46, + 18, + 163, + 140, + 46, + 215, + 20, + 26, + 196, + 214, + 171, + 110, + 164, + 102, + 11, + 59, + 224, + 133, + 150, + 93, + 23, + 146, + 244, + 95, + 52, + 175, + 156, + 138, + 96, + 78, + 131, + 20, + 168, + 96, + 7, + 31, + 100, + 224, + 194, + 95, + 192, + 167, + 13, + 201, + 248, + 127, + 187, + 157, + 239, + 48, + 194, + 199, + 28, + 17, + 154, + 224, + 6, + 240, + 194, + 172, + 168, + 130, + 91, + 171, + 111, + 66, + 87, + 233, + 169, + 217, + 249, + 70, + 91, + 192, + 132, + 219, + 168, + 2, + 216, + 120, + 178, + 180, + 110, + 104, + 169, + 212, + 107, + 56, + 14, + 199, + 56, + 96, + 167, + 248, + 90, + 90, + 25, + 92, + 74, + 42, + 153, + 234, + 110, + 16, + 148, + 98, + 154, + 165, + 84, + 96, + 27, + 121, + 102, + 89, + 87, + 166, + 14, + 102, + 34, + 255, + 55, + 239, + 199, + 168, + 51, + 170, + 79, + 29, + 152, + 157, + 218, + 166, + 239, + 188, + 141, + 124, + 25, + 63, + 28, + 240, + 116, + 15, + 136, + 216, + 169, + 29, + 100, + 176, + 111, + 25, + 29, + 44, + 192, + 206, + 109, + 74, + 244, + 167, + 103, + 193, + 254, + 35, + 180, + 84, + 203, + 119, + 177, + 35, + 151, + 176, + 235, + 207, + 194, + 180, + 249, + 135, + 36, + 166, + 244, + 32, + 23, + 217, + 174, + 136, + 100, + 129, + 162, + 27, + 69, + 145, + 214, + 54, + 2, + 14, + 63, + 116, + 93, + 184, + 67, + 205, + 108, + 142, + 199, + 239, + 164, + 112, + 221, + 156, + 57, + 24, + 233, + 118, + 144, + 172, + 119, + 0, + 189, + 178, + 146, + 230, + 8, + 9, + 124, + 158, + 47, + 24, + 215, + 210, + 222, + 240, + 189, + 177, + 235, + 218, + 151, + 32, + 225, + 59, + 149, + 51, + 207, + 202, + 118, + 255, + 50, + 151, + 3, + 220, + 104, + 207, + 177, + 9, + 248, + 31, + 84, + 32, + 161, + 104, + 66, + 127, + 34, + 27, + 216, + 23, + 0, + 135, + 221, + 5, + 56, + 212, + 227, + 22, + 73, + 60, + 179, + 250, + 182, + 81, + 173, + 63, + 15, + 240, + 142, + 51, + 209, + 54, + 206, + 54, + 81, + 175, + 12, + 240, + 173, + 10, + 110, + 149, + 235, + 51, + 172, + 223, + 50, + 192, + 83, + 3, + 2, + 164, + 137, + 87, + 192, + 196, + 146, + 111, + 57, + 140, + 229, + 124, + 83, + 217, + 100, + 39, + 73, + 223, + 120, + 41, + 223, + 211, + 180, + 175, + 53, + 142, + 185, + 213, + 227, + 229, + 122, + 160, + 76, + 64, + 153, + 84, + 1, + 236, + 138, + 165, + 159, + 156, + 31, + 233, + 110, + 139, + 79, + 153, + 173, + 21, + 26, + 31, + 207, + 142, + 179, + 145, + 103, + 110, + 234, + 142, + 178, + 246, + 220, + 12, + 113, + 244, + 187, + 200, + 72, + 14, + 168, + 145, + 129, + 83, + 72, + 20, + 158, + 224, + 106, + 150, + 194, + 183, + 166, + 208, + 78, + 87, + 36, + 170, + 15, + 9, + 46, + 154, + 97, + 150, + 69, + 3, + 31, + 216, + 118, + 30, + 14, + 95, + 120, + 213, + 13, + 180, + 17, + 55, + 230, + 29, + 181, + 8, + 250, + 1, + 141, + 168, + 168, + 230, + 160, + 87, + 112, + 237, + 77, + 113, + 159, + 208, + 161, + 170, + 117, + 145, + 170, + 48, + 208, + 97, + 61, + 159, + 172, + 136, + 78, + 146, + 83, + 154, + 214, + 113, + 191, + 194, + 19, + 236, + 39, + 103, + 218, + 220, + 216, + 79, + 52, + 57, + 7, + 188, + 84, + 158, + 225, + 11, + 44, + 65, + 105, + 22, + 9, + 230, + 134, + 55, + 106, + 205, + 60, + 211, + 130, + 11, + 87, + 54, + 240, + 223, + 99, + 52, + 1, + 87, + 7, + 6, + 210, + 121, + 203, + 131, + 12, + 109, + 31, + 174, + 254, + 253, + 56, + 162, + 231, + 38, + 154, + 67, + 89, + 233, + 17, + 128, + 133, + 104, + 97, + 90, + 169, + 120, + 19, + 153, + 34, + 152, + 172, + 238, + 110, + 239, + 254, + 38, + 112, + 101, + 75, + 49, + 98, + 19, + 134, + 147, + 173, + 34, + 20, + 251, + 188, + 146, + 40, + 240, + 117, + 206, + 178, + 39, + 22, + 66, + 246, + 160, + 138, + 88, + 157, + 114, + 63, + 102, + 63, + 81, + 226, + 217, + 200, + 43, + 73, + 25, + 135, + 173, + 146, + 0, + 177, + 58, + 149, + 110, + 41, + 213, + 87, + 125, + 246, + 78, + 151, + 158, + 242, + 170, + 179, + 55, + 170, + 52, + 126, + 17, + 111, + 30, + 180, + 117, + 52, + 227, + 103, + 147, + 63, + 75, + 146, + 204, + 97, + 158, + 153, + 81, + 73, + 73, + 189, + 241, + 42, + 180, + 158, + 20, + 85, + 166, + 123, + 166, + 99, + 245, + 201, + 18, + 149, + 120, + 248, + 179, + 132, + 227, + 66, + 232, + 117, + 58, + 32, + 231, + 46, + 224, + 192, + 155, + 219, + 104, + 248, + 167, + 106, + 94, + 70, + 92, + 173, + 21, + 204, + 153, + 53, + 241, + 223, + 44, + 40, + 59, + 153, + 45, + 151, + 197, + 134, + 74, + 47, + 185, + 204, + 23, + 48, + 27, + 168, + 143, + 189, + 32, + 206, + 134, + 25, + 162, + 11, + 166, + 45, + 24, + 148, + 27, + 255, + 36, + 53, + 25, + 198, + 158, + 244, + 127, + 115, + 65, + 110, + 73, + 133, + 191, + 11, + 39, + 68, + 47, + 19, + 248, + 54, + 139, + 78, + 198, + 123, + 97, + 8, + 168, + 58, + 174, + 113, + 160, + 191, + 106, + 52, + 233, + 112, + 164, + 64, + 11, + 223, + 187, + 166, + 215, + 121, + 168, + 71, + 144, + 20, + 82, + 215, + 208, + 100, + 134, + 151, + 118, + 253, + 71, + 59, + 3, + 194, + 154, + 214, + 6, + 248, + 170, + 6, + 60, + 86, + 236, + 47, + 226, + 143, + 55, + 186, + 105, + 235, + 32, + 69, + 241, + 22, + 110, + 1, + 149, + 141, + 244, + 91, + 171, + 50, + 15, + 96, + 121, + 65, + 22, + 21, + 25, + 140, + 231, + 10, + 170, + 103, + 187, + 86, + 233, + 114, + 124, + 140, + 153, + 76, + 212, + 4, + 245, + 126, + 226, + 25, + 39, + 7, + 2, + 60, + 228, + 31, + 8, + 128, + 101, + 172, + 167, + 224, + 188, + 35, + 79, + 106, + 219, + 144, + 216, + 156, + 250, + 66, + 50, + 163, + 129, + 31, + 252, + 50, + 29, + 12, + 23, + 172, + 73, + 23, + 190, + 72, + 218, + 208, + 117, + 244, + 177, + 117, + 177, + 223, + 110, + 70, + 242, + 50, + 156, + 254, + 229, + 116, + 99, + 220, + 72, + 55, + 197, + 100, + 21, + 223, + 70, + 156, + 109, + 131, + 17, + 73, + 110, + 153, + 125, + 38, + 183, + 251, + 193, + 194, + 55, + 217, + 156, + 202, + 97, + 73, + 95, + 224, + 118, + 223, + 214, + 184, + 38, + 136, + 11, + 202, + 25, + 91, + 247, + 247, + 113, + 195, + 191, + 250, + 82, + 34, + 3, + 63, + 206, + 165, + 172, + 35, + 39, + 180, + 166, + 223, + 56, + 7, + 68, + 20, + 44, + 52, + 2, + 111, + 185, + 57, + 26, + 164, + 138, + 182, + 249, + 245, + 109, + 36, + 157, + 56, + 58, + 12, + 66, + 162, + 232, + 42, + 17, + 159, + 238, + 82, + 79, + 251, + 234, + 233, + 44, + 205, + 231, + 140, + 110, + 229, + 144, + 103, + 230, + 153, + 26, + 74, + 247, + 122, + 229, + 255, + 141, + 127, + 43, + 84, + 119, + 74, + 54, + 185, + 211, + 217, + 203, + 32, + 160, + 197, + 249, + 12, + 108, + 250, + 252, + 24, + 129, + 97, + 182, + 64, + 99, + 5, + 13, + 105, + 65, + 116, + 106, + 228, + 31, + 42, + 55, + 242, + 148, + 45, + 51, + 184, + 34, + 98, + 117, + 184, + 115, + 56, + 223, + 53, + 135, + 37, + 81, + 85, + 69, + 88, + 80, + 107, + 101, + 188, + 235, + 40, + 41, + 28, + 17, + 66, + 18, + 0, + 239, + 234, + 127, + 11, + 222, + 122, + 174, + 210, + 56, + 59, + 58, + 156, + 192, + 32, + 0, + 107, + 3, + 21, + 215, + 171, + 209, + 223, + 212, + 72, + 203, + 136, + 254, + 109, + 195, + 46, + 124, + 61, + 248, + 198, + 180, + 67, + 248, + 117, + 142, + 101, + 203, + 107, + 27, + 240, + 9, + 211, + 184, + 182, + 137, + 12, + 62, + 25, + 230, + 181, + 125, + 244, + 18, + 160, + 14, + 41, + 222, + 187, + 138, + 55, + 232, + 183, + 26, + 201, + 186, + 4, + 56, + 208, + 235, + 216, + 28, + 161, + 182, + 250, + 171, + 72, + 52, + 12, + 14, + 137, + 126, + 28, + 121, + 238, + 143, + 144, + 222, + 164, + 132, + 70, + 151, + 2, + 17, + 182, + 149, + 90, + 180, + 105, + 8, + 60, + 203, + 202, + 62, + 210, + 149, + 65, + 254, + 117, + 111, + 118, + 16, + 249, + 219, + 182, + 175, + 49, + 50, + 101, + 114, + 246, + 166, + 224, + 111, + 183, + 159, + 15, + 227, + 1, + 187, + 249, + 112, + 34, + 29, + 142, + 219, + 47, + 201, + 54, + 138, + 119, + 77, + 26, + 246, + 192, + 61, + 77, + 80, + 235, + 204, + 236, + 127, + 204, + 44, + 160, + 248, + 252, + 93, + 130, + 163, + 206, + 45, + 58, + 50, + 84, + 144, + 181, + 185, + 54, + 176, + 102, + 32, + 63, + 4, + 75, + 164, + 192, + 214, + 43, + 31, + 70, + 50, + 202, + 5, + 166, + 41, + 97, + 211, + 188, + 152, + 154, + 178, + 133, + 213, + 47, + 116, + 125, + 216, + 190, + 18, + 31, + 28, + 188, + 9, + 70, + 62, + 21, + 109, + 228, + 206, + 188, + 65, + 206, + 161, + 103, + 190, + 151, + 70, + 112, + 189, + 152, + 89, + 192, + 14, + 252, + 52, + 167, + 81, + 171, + 126, + 210, + 7, + 163, + 166, + 247, + 59, + 241, + 92, + 35, + 210, + 59, + 230, + 25, + 65, + 251, + 97, + 156, + 6, + 190, + 231, + 100, + 192, + 216, + 234, + 245, + 137, + 242, + 24, + 86, + 146, + 98, + 83, + 184, + 115, + 255, + 33, + 36, + 253, + 126, + 8, + 212, + 155, + 176, + 193, + 123, + 148, + 216, + 147, + 172, + 60, + 157, + 166, + 78, + 247, + 184, + 59, + 97, + 195, + 210, + 255, + 103, + 255, + 70, + 46, + 236, + 186, + 40, + 22, + 39, + 2, + 132, + 33, + 227, + 69, + 81, + 202, + 227, + 37, + 168, + 85, + 254, + 197, + 36, + 43, + 101, + 89, + 127, + 112, + 30, + 81, + 33, + 66, + 53, + 205, + 133, + 61, + 60, + 45, + 98, + 11, + 166, + 207, + 86, + 76, + 190, + 21, + 191, + 250, + 21, + 48, + 193, + 165, + 66, + 179, + 61, + 251, + 237, + 178, + 202, + 3, + 191, + 204, + 145, + 28, + 170, + 189, + 51, + 168, + 255, + 254, + 21, + 175, + 234, + 177, + 132, + 147, + 235, + 133, + 252, + 12, + 234, + 171, + 107, + 242, + 62, + 141, + 129, + 177, + 250, + 187, + 195, + 196, + 163, + 80, + 132, + 214, + 145, + 167, + 71, + 250, + 51, + 206, + 104, + 138, + 219, + 129, + 71, + 138, + 201, + 14, + 135, + 171, + 240, + 3, + 100, + 130, + 103, + 124, + 225, + 183, + 199, + 95, + 189, + 214, + 140, + 83, + 118, + 247, + 236, + 166, + 44, + 201, + 202, + 134, + 70, + 220, + 147, + 42, + 31, + 211, + 24, + 198, + 184, + 130, + 223, + 19, + 219, + 232, + 80, + 48, + 179, + 114, + 48, + 93, + 10, + 240, + 189, + 197, + 196, + 65, + 1, + 30, + 251, + 186, + 150, + 231, + 39, + 177, + 103, + 63, + 21, + 253, + 123, + 98, + 127, + 18, + 224, + 101, + 23, + 251, + 184, + 59, + 170, + 229, + 36, + 183, + 102, + 28, + 207, + 129, + 30, + 5, + 188, + 229, + 51, + 71, + 237, + 248, + 158, + 158, + 175, + 57, + 71, + 62, + 252, + 227, + 207, + 111, + 77, + 189, + 133, + 159, + 46, + 118, + 6, + 128, + 180, + 93, + 133, + 158, + 0, + 15, + 252, + 158, + 187, + 98, + 15, + 202, + 151, + 178, + 229, + 206, + 102, + 205, + 153, + 20, + 22, + 167, + 250, + 41, + 219, + 248, + 119, + 137, + 156, + 168, + 57, + 119, + 145, + 170, + 15, + 67, + 233, + 79, + 68, + 204, + 180, + 39, + 59, + 78, + 28, + 135, + 187, + 40, + 151, + 125, + 233, + 193, + 205, + 176, + 163, + 64, + 195, + 119, + 63, + 52, + 52, + 195, + 131, + 174, + 191, + 217, + 225, + 106, + 110, + 92, + 51, + 149, + 123, + 204, + 227, + 135, + 51, + 233, + 20, + 252, + 6, + 109, + 223, + 219, + 7, + 232, + 122, + 152, + 230, + 226, + 206, + 160, + 111, + 9, + 28, + 154, + 223, + 68, + 237, + 93, + 234, + 211, + 245, + 235, + 73, + 14, + 15, + 214, + 140, + 33, + 49, + 19, + 215, + 56, + 134, + 84, + 241, + 109, + 119, + 106, + 122, + 10, + 129, + 8, + 141, + 36, + 129, + 99, + 186, + 167, + 228, + 100, + 183, + 227, + 233, + 154, + 239, + 99, + 138, + 243, + 230, + 6, + 7, + 32, + 225, + 80, + 69, + 81, + 181, + 40, + 246, + 80, + 33, + 92, + 124, + 0, + 56, + 59, + 217, + 96, + 9, + 161, + 85, + 88, + 7, + 49, + 217, + 17, + 73, + 121, + 151, + 198, + 57, + 217, + 87, + 11, + 116, + 226, + 149, + 132, + 6, + 91, + 204, + 50, + 194, + 77, + 72, + 87, + 43, + 3, + 5, + 52, + 16, + 88, + 24, + 137, + 11, + 122, + 2, + 200, + 67, + 117, + 115, + 184, + 217, + 188, + 142, + 80, + 215, + 2, + 47, + 99, + 230, + 74, + 231, + 177, + 204, + 26, + 82, + 115, + 180, + 12, + 194, + 85, + 229, + 247, + 195, + 212, + 209, + 163, + 237, + 149, + 93, + 118, + 239, + 22, + 184, + 173, + 131, + 28, + 228, + 200, + 0, + 193, + 203, + 253, + 45, + 189, + 162, + 4, + 34, + 17, + 176, + 124, + 216, + 60, + 169, + 230, + 35, + 92, + 143, + 145, + 147, + 122, + 64, + 164, + 208, + 76, + 45, + 122, + 248, + 215, + 100, + 64, + 179, + 34, + 204, + 232, + 220, + 176, + 70, + 218, + 46, + 81, + 103, + 177, + 35, + 232, + 143, + 19, + 254, + 244, + 3, + 230, + 227, + 205, + 19, + 56, + 177, + 183, + 27, + 93, + 21, + 251, + 212, + 101, + 212, + 205, + 181, + 85, + 239, + 167, + 190, + 203, + 84, + 129, + 155, + 81, + 184, + 110, + 158, + 202, + 134, + 223, + 160, + 46, + 187, + 92, + 139, + 191, + 169, + 121, + 122, + 93, + 255, + 190, + 20, + 133, + 167, + 215, + 206, + 53, + 250, + 249, + 228, + 202, + 15, + 1, + 228, + 168, + 233, + 238, + 71, + 69, + 238, + 238, + 185, + 149, + 58, + 15, + 226, + 39, + 162, + 33, + 207, + 57, + 43, + 188, + 164, + 133, + 11, + 120, + 252, + 68, + 70, + 110, + 58, + 64, + 112, + 82, + 61, + 129, + 93, + 96, + 126, + 60, + 180, + 242, + 197, + 47, + 13, + 150, + 177, + 36, + 102, + 72, + 234, + 55, + 175, + 59, + 162, + 139, + 233, + 17, + 78, + 239, + 121, + 11, + 215, + 158, + 47, + 169, + 11, + 84, + 159, + 245, + 152, + 117, + 154, + 83, + 124, + 141, + 170, + 131, + 32, + 181, + 76, + 91, + 169, + 48, + 159, + 86, + 71, + 125, + 24, + 115, + 46, + 54, + 144, + 94, + 64, + 51, + 67, + 200, + 87, + 7, + 172, + 188, + 127, + 173, + 84, + 222, + 101, + 58, + 211, + 92, + 186, + 229, + 52, + 6, + 138, + 114, + 29, + 48, + 140, + 129, + 53, + 248, + 25, + 39, + 248, + 121, + 237, + 153, + 70, + 205, + 167, + 137, + 39, + 67, + 170, + 239, + 16, + 143, + 112, + 180, + 136, + 79, + 55, + 186, + 87, + 174, + 114, + 174, + 254, + 208, + 175, + 240, + 75, + 12, + 96, + 111, + 39, + 200, + 121, + 16, + 91, + 98, + 11, + 5, + 139, + 3, + 143, + 16, + 254, + 145, + 46, + 87, + 144, + 57, + 1, + 152, + 72, + 25, + 56, + 211, + 200, + 211, + 146, + 241, + 113, + 49, + 211, + 84, + 103, + 175, + 29, + 78, + 205, + 18, + 2, + 215, + 246, + 161, + 64, + 89, + 156, + 71, + 160, + 13, + 21, + 180, + 228, + 91, + 8, + 44, + 209, + 236, + 159, + 160, + 10, + 180, + 84, + 161, + 29, + 124, + 192, + 28, + 158, + 183, + 77, + 243, + 217, + 23, + 123, + 32, + 203, + 24, + 203, + 65, + 102, + 238, + 42, + 70, + 228, + 183, + 127, + 195, + 41, + 105, + 149, + 130, + 112, + 78, + 209, + 160, + 74, + 58, + 165, + 37, + 60, + 132, + 47, + 87, + 246, + 254, + 250, + 62, + 166, + 90, + 72, + 43, + 127, + 224, + 160, + 54, + 68, + 130, + 55, + 180, + 152, + 9, + 118, + 101, + 101, + 112, + 153, + 104, + 19, + 111, + 88, + 58, + 226, + 54, + 149, + 48, + 114, + 115, + 24, + 155, + 222, + 162, + 99, + 179, + 167, + 197, + 179, + 4, + 107, + 127, + 188, + 231, + 164, + 191, + 157, + 184, + 24, + 154, + 181, + 195, + 19, + 4, + 244, + 96, + 155, + 217, + 245, + 134, + 93, + 240, + 47, + 193, + 27, + 186, + 120, + 50, + 78, + 33, + 156, + 10, + 139, + 51, + 250, + 157, + 222, + 231, + 170, + 165, + 219, + 68, + 78, + 198, + 55, + 53, + 89, + 67, + 134, + 206, + 36, + 48, + 119, + 254, + 180, + 45, + 191, + 26, + 80, + 35, + 68, + 84, + 84, + 35, + 3, + 209, + 84, + 206, + 4, + 173, + 212, + 233, + 43, + 173, + 82, + 57, + 7, + 204, + 236, + 233, + 241, + 20, + 210, + 208, + 169, + 4, + 219, + 215, + 218, + 118, + 37, + 14, + 216, + 175, + 118, + 100, + 210, + 101, + 53, + 241, + 18, + 242, + 15, + 227, + 87, + 235, + 103, + 190, + 187, + 252, + 133, + 92, + 110, + 64, + 111, + 90, + 105, + 232, + 236, + 115, + 76, + 8, + 111, + 176, + 31, + 29, + 236, + 70, + 12, + 62, + 72, + 122, + 86, + 132, + 113, + 252, + 68, + 198, + 93, + 179, + 114, + 86, + 211, + 211, + 38, + 236, + 107, + 76, + 254, + 177, + 150, + 156, + 151, + 166, + 191, + 85, + 171, + 228, + 208, + 71, + 219, + 141, + 36, + 95, + 114, + 41, + 53, + 142, + 154, + 242, + 125, + 171, + 1, + 106, + 193, + 178, + 109, + 56, + 108, + 226, + 25, + 140, + 247, + 241, + 85, + 101, + 131, + 57, + 20, + 253, + 37, + 202, + 27, + 130, + 60, + 190, + 8, + 154, + 22, + 213, + 242, + 173, + 251, + 158, + 254, + 224, + 230, + 70, + 252, + 230, + 59, + 183, + 161, + 53, + 172, + 216, + 225, + 144, + 233, + 110, + 47, + 171, + 79, + 35, + 133, + 70, + 193, + 5, + 43, + 225, + 5, + 179, + 69, + 123, + 6, + 54, + 56, + 184, + 63, + 54, + 10, + 164, + 6, + 120, + 29, + 71, + 17, + 34, + 123, + 134, + 128, + 118, + 22, + 255, + 251, + 215, + 44, + 154, + 247, + 32, + 67, + 255, + 204, + 6, + 88, + 74, + 128, + 246, + 172, + 76, + 104, + 156, + 54, + 202, + 77, + 93, + 66, + 111, + 100, + 85, + 245, + 130, + 141, + 129, + 22, + 30, + 190, + 99, + 40, + 158, + 110, + 106, + 53, + 232, + 159, + 232, + 74, + 245, + 1, + 69, + 218, + 121, + 0, + 101, + 33, + 128, + 191, + 78, + 248, + 107, + 99, + 254, + 78, + 60, + 115, + 70, + 90, + 153, + 114, + 205, + 46, + 177, + 196, + 156, + 99, + 120, + 231, + 140, + 29, + 219, + 199, + 155, + 249, + 32, + 169, + 241, + 181, + 41, + 254, + 93, + 188, + 149, + 202, + 252, + 41, + 231, + 224, + 67, + 52, + 220, + 65, + 146, + 19, + 89, + 109, + 176, + 39, + 54, + 228, + 244, + 168, + 225, + 124, + 117, + 67, + 167, + 128, + 200, + 24, + 130, + 216, + 31, + 30, + 95, + 212, + 115, + 199, + 98, + 16, + 0, + 237, + 4, + 72, + 59, + 159, + 118, + 37, + 107, + 199, + 11, + 26, + 21, + 170, + 0, + 22, + 143, + 166, + 112, + 58, + 165, + 107, + 215, + 47, + 143, + 92, + 179, + 80, + 165, + 148, + 151, + 39, + 13, + 125, + 115, + 158, + 249, + 160, + 242, + 161, + 42, + 105, + 105, + 32, + 84, + 41, + 97, + 94, + 114, + 196, + 51, + 166, + 44, + 164, + 203, + 57, + 13, + 64, + 24, + 226, + 157, + 76, + 6, + 170, + 219, + 181, + 27, + 18, + 18, + 241, + 161, + 196, + 70, + 59, + 49, + 161, + 56, + 212, + 89, + 53, + 31, + 183, + 156, + 42, + 193, + 199, + 215, + 202, + 214, + 8, + 162, + 54, + 178, + 45, + 80, + 84, + 144, + 33, + 233, + 230, + 110, + 237, + 24, + 166, + 171, + 176, + 29, + 242, + 143, + 167, + 91, + 128, + 167, + 143, + 102, + 215, + 65, + 135, + 195, + 206, + 177, + 145, + 42, + 106, + 169, + 54, + 49, + 132, + 193, + 178, + 92, + 19, + 161, + 215, + 155, + 16, + 146, + 155, + 190, + 229, + 152, + 0, + 154, + 187, + 208, + 87, + 207, + 244, + 223, + 171, + 125, + 147, + 186, + 81, + 64, + 239, + 53, + 178, + 226, + 48, + 218, + 45, + 5, + 201, + 57, + 103, + 128, + 6, + 122, + 49, + 167, + 236, + 106, + 211, + 142, + 134, + 146, + 255, + 4, + 126, + 10, + 124, + 50, + 145, + 8, + 33, + 9, + 28, + 202, + 60, + 201, + 134, + 75, + 253, + 187, + 123, + 144, + 142, + 176, + 75, + 85, + 87, + 20, + 31, + 29, + 122, + 83, + 80, + 17, + 204, + 209, + 114, + 7, + 241, + 218, + 244, + 228, + 137, + 204, + 235, + 234, + 219, + 116, + 23, + 73, + 94, + 184, + 241, + 155, + 116, + 238, + 179, + 218, + 0, + 75, + 163, + 36, + 8, + 76, + 241, + 229, + 20, + 56, + 174, + 14, + 32, + 247, + 110, + 155, + 247, + 0, + 229, + 115, + 118, + 117, + 22, + 191, + 207, + 231, + 123, + 109, + 202, + 154, + 215, + 91, + 90, + 106, + 195, + 151, + 61, + 254, + 62, + 154, + 108, + 214, + 221, + 187, + 3, + 35, + 131, + 224, + 247, + 180, + 195, + 196, + 5, + 185, + 199, + 140, + 120, + 242, + 254, + 39, + 117, + 94, + 14, + 151, + 49, + 89, + 146, + 46, + 17, + 82, + 139, + 1, + 53, + 204, + 124, + 66, + 27, + 119, + 186, + 215, + 154, + 29, + 18, + 12, + 73, + 252, + 226, + 30, + 83, + 62, + 48, + 122, + 171, + 13, + 21, + 12, + 194, + 229, + 189, + 51, + 58, + 150, + 177, + 100, + 37, + 121, + 15, + 83, + 36, + 202, + 20, + 17, + 47, + 183, + 125, + 1, + 35, + 62, + 210, + 91, + 161, + 217, + 120, + 0, + 142, + 225, + 69, + 181, + 121, + 234, + 238, + 216, + 230, + 205, + 7, + 12, + 117, + 229, + 124, + 161, + 102, + 40, + 185, + 149, + 68, + 141, + 140, + 196, + 138, + 120, + 57, + 213, + 157, + 157, + 43, + 183, + 74, + 17, + 149, + 176, + 72, + 218, + 61, + 245, + 198, + 41, + 174, + 236, + 168, + 174, + 128, + 17, + 72, + 65, + 190, + 190, + 41, + 67, + 20, + 31, + 255, + 104, + 38, + 5, + 243, + 53, + 153, + 71, + 103, + 136, + 114, + 128, + 157, + 218, + 221, + 214, + 151, + 83, + 43, + 242, + 234, + 113, + 219, + 218, + 166, + 124, + 61, + 104, + 240, + 187, + 189, + 13, + 113, + 180, + 9, + 43, + 134, + 127, + 21, + 97, + 219, + 67, + 191, + 238, + 171, + 193, + 89, + 34, + 217, + 18, + 34, + 175, + 227, + 237, + 213, + 249, + 169, + 134, + 49, + 141, + 180, + 199, + 117, + 166, + 224, + 225, + 187, + 96, + 160, + 90, + 186, + 252, + 189, + 8, + 159, + 117, + 190, + 161, + 9, + 38, + 158, + 59, + 211, + 0, + 58, + 118, + 167, + 163, + 206, + 128, + 178, + 78, + 42, + 25, + 96, + 198, + 136, + 64, + 216, + 59, + 166, + 90, + 123, + 34, + 60, + 168, + 25, + 5, + 143, + 27, + 232, + 113, + 119, + 3, + 209, + 127, + 136, + 48, + 98, + 187, + 212, + 198, + 14, + 1, + 8, + 207, + 181, + 4, + 89, + 194, + 54, + 15, + 99, + 15, + 116, + 238, + 64, + 139, + 161, + 238, + 109, + 33, + 4, + 19, + 159, + 52, + 127, + 152, + 32, + 25, + 181, + 112, + 135, + 152, + 105, + 88, + 170, + 143, + 104, + 26, + 123, + 116, + 77, + 79, + 31, + 88, + 219, + 150, + 17, + 13, + 0, + 110, + 177, + 34, + 109, + 222, + 8, + 135, + 219, + 182, + 148, + 160, + 99, + 148, + 33, + 90, + 146, + 144, + 14, + 150, + 115, + 172, + 20, + 194, + 167, + 68, + 95, + 159, + 188, + 137, + 199, + 152, + 236, + 158, + 103, + 74, + 189, + 148, + 191, + 109, + 39, + 62, + 187, + 132, + 250, + 35, + 95, + 13, + 62, + 79, + 215, + 163, + 191, + 119, + 34, + 13, + 238, + 143, + 230, + 10, + 6, + 205, + 194, + 9, + 145, + 129, + 70, + 18, + 220, + 101, + 152, + 128, + 120, + 206, + 252, + 111, + 192, + 148, + 124, + 199, + 221, + 21, + 165, + 141, + 185, + 104, + 63, + 240, + 126, + 19, + 198, + 216, + 200, + 0, + 97, + 47, + 63, + 134, + 243, + 29, + 144, + 132, + 251, + 170, + 42, + 161, + 141, + 66, + 235, + 119, + 83, + 246, + 38, + 78, + 191, + 188, + 34, + 31, + 82, + 202, + 171, + 19, + 15, + 130, + 167, + 246, + 199, + 2, + 141, + 21, + 243, + 149, + 151, + 46, + 229, + 128, + 175, + 88, + 81, + 65, + 216, + 11, + 144, + 114, + 215, + 139, + 91, + 125, + 72, + 217, + 94, + 29, + 128, + 97, + 163, + 98, + 44, + 10, + 245, + 22, + 189, + 178, + 204, + 128, + 202, + 179, + 123, + 195, + 65, + 251, + 49, + 104, + 12, + 43, + 116, + 182, + 168, + 155, + 119, + 217, + 43, + 50, + 191, + 201, + 119, + 6, + 164, + 15, + 142, + 137, + 89, + 99, + 18, + 97, + 168, + 112, + 46, + 68, + 199, + 218, + 190, + 205, + 238, + 240, + 156, + 35, + 86, + 39, + 30, + 41, + 48, + 28, + 29, + 48, + 36, + 224, + 66, + 25, + 132, + 208, + 148, + 92, + 121, + 242, + 169, + 136, + 19, + 34, + 40, + 4, + 58, + 190, + 228, + 185, + 91, + 154, + 232, + 242, + 223, + 157, + 81, + 172, + 241, + 216, + 42, + 40, + 145, + 34, + 234, + 79, + 188, + 191, + 17, + 240, + 221, + 122, + 99, + 134, + 48, + 28, + 185, + 153, + 160, + 217, + 232, + 159, + 21, + 199, + 157, + 42, + 41, + 203, + 217, + 252, + 47, + 215, + 180, + 69, + 20, + 131, + 36, + 163, + 27, + 108, + 245, + 159, + 29, + 192, + 163, + 120, + 248, + 1, + 111, + 168, + 165, + 253, + 107, + 49, + 84, + 46, + 85, + 108, + 233, + 173, + 210, + 83, + 109, + 240, + 130, + 217, + 96, + 53, + 66, + 136, + 214, + 68, + 244, + 150, + 125, + 114, + 154, + 128, + 29, + 59, + 139, + 85, + 34, + 115, + 99, + 209, + 10, + 247, + 43, + 222, + 25, + 32, + 246, + 137, + 199, + 140, + 127, + 116, + 115, + 164, + 99, + 105, + 198, + 255, + 133, + 232, + 53, + 209, + 63, + 1, + 85, + 65, + 48, + 16, + 99, + 34, + 111, + 230, + 63, + 146, + 194, + 208, + 107, + 152, + 164, + 162, + 133, + 236, + 201, + 21, + 49, + 175, + 6, + 85, + 201, + 78, + 132, + 59, + 34, + 132, + 16, + 125, + 45, + 41, + 102, + 116, + 179, + 229, + 57, + 126, + 91, + 75, + 124, + 126, + 33, + 22, + 116, + 122, + 41, + 227, + 21, + 182, + 124, + 195, + 105, + 168, + 124, + 195, + 35, + 104, + 16, + 228, + 25, + 36, + 27, + 30, + 37, + 108, + 250, + 114, + 129, + 46, + 213, + 121, + 178, + 52, + 171, + 226, + 199, + 43, + 42, + 99, + 68, + 31, + 6, + 99, + 149, + 72, + 137, + 207, + 102, + 206, + 176, + 3, + 123, + 55, + 161, + 247, + 33, + 114, + 206, + 170, + 162, + 123, + 235, + 162, + 186, + 15, + 17, + 27, + 75, + 29, + 111, + 166, + 7, + 47, + 154, + 14, + 73, + 133, + 28, + 213, + 254, + 9, + 129, + 120, + 125, + 245, + 77, + 191, + 175, + 200, + 95, + 132, + 202, + 133, + 126, + 40, + 33, + 22, + 75, + 200, + 7, + 149, + 223, + 218, + 25, + 3, + 159, + 72, + 231, + 103, + 16, + 178, + 255, + 179, + 132, + 10, + 223, + 169, + 203, + 180, + 164, + 220, + 33, + 214, + 105, + 255, + 110, + 55, + 203, + 247, + 75, + 12, + 200, + 80, + 246, + 149, + 253, + 76, + 140, + 79, + 42, + 180, + 59, + 36, + 151, + 145, + 19, + 82, + 214, + 29, + 80, + 6, + 148, + 131, + 80, + 163, + 15, + 109, + 160, + 126, + 15, + 194, + 145, + 190, + 97, + 33, + 2, + 225, + 148, + 247, + 32, + 157, + 94, + 10, + 80, + 55, + 196, + 95, + 25, + 165, + 95, + 191, + 63, + 232, + 39, + 29, + 71, + 226, + 141, + 89, + 124, + 30, + 19, + 94, + 23, + 173, + 214, + 76, + 181, + 221, + 25, + 88, + 13, + 143, + 122, + 97, + 219, + 34, + 186, + 74, + 201, + 85, + 151, + 145, + 124, + 124, + 232, + 141, + 26, + 202, + 6, + 169, + 180, + 148, + 62, + 107, + 164, + 12, + 248, + 48, + 206, + 253, + 62, + 68, + 213, + 166, + 69, + 112, + 193, + 89, + 33, + 12, + 254, + 188, + 98, + 189, + 44, + 34, + 234, + 130, + 22, + 13, + 98, + 224, + 1, + 99, + 11, + 56, + 106, + 5, + 4, + 82, + 234, + 99, + 53, + 163, + 195, + 134, + 54, + 140, + 106, + 56, + 171, + 177, + 218, + 109, + 201, + 185, + 205, + 18, + 7, + 211, + 242, + 231, + 51, + 17, + 116, + 54, + 27, + 235, + 125, + 159, + 93, + 233, + 229, + 33, + 118, + 111, + 140, + 146, + 178, + 173, + 224, + 242, + 64, + 81, + 111, + 95, + 223, + 143, + 166, + 226, + 66, + 204, + 58, + 156, + 203, + 117, + 148, + 18, + 20, + 91, + 125, + 240, + 50, + 73, + 112, + 135, + 107, + 156, + 252, + 249, + 171, + 108, + 11, + 47, + 72, + 233, + 218, + 227, + 213, + 118, + 90, + 90, + 234, + 173, + 58, + 60, + 135, + 166, + 228, + 61, + 22, + 131, + 224, + 5, + 78, + 121, + 90, + 249, + 252, + 162, + 218, + 34, + 26, + 119, + 189, + 202, + 102, + 42, + 85, + 13, + 135, + 149, + 241, + 201, + 164, + 74, + 177, + 68, + 67, + 150, + 233, + 138, + 171, + 5, + 181, + 236, + 139, + 81, + 161, + 88, + 206, + 193, + 95, + 196, + 21, + 79, + 4, + 68, + 105, + 68, + 206, + 176, + 194, + 240, + 158, + 233, + 96, + 146, + 200, + 145, + 237, + 254, + 102, + 147, + 198, + 7, + 21, + 111, + 113, + 67, + 114, + 145, + 164, + 67, + 7, + 84, + 48, + 26, + 145, + 226, + 98, + 34, + 86, + 35, + 86, + 54, + 105, + 127, + 132, + 185, + 177, + 74, + 93, + 8, + 159, + 116, + 89, + 105, + 174, + 117, + 130, + 17, + 218, + 216, + 128, + 177, + 120, + 59, + 121, + 130, + 144, + 121, + 131, + 142, + 137, + 63, + 34, + 35, + 102, + 3, + 120, + 182, + 87, + 175, + 128, + 49, + 20, + 230, + 180, + 17, + 34, + 113, + 170, + 190, + 154, + 54, + 226, + 222, + 247, + 60, + 243, + 62, + 253, + 223, + 73, + 221, + 194, + 113, + 52, + 2, + 112, + 9, + 81, + 171, + 87, + 84, + 222, + 131, + 242, + 157, + 113, + 84, + 142, + 125, + 28, + 104, + 200, + 6, + 38, + 18, + 24, + 76, + 94, + 252, + 41, + 52, + 31, + 56, + 235, + 242, + 83, + 117, + 22, + 172, + 92, + 69, + 124, + 235, + 191, + 91, + 172, + 238, + 177, + 82, + 240, + 69, + 118, + 240, + 101, + 118, + 113, + 213, + 86, + 154, + 251, + 38, + 192, + 99, + 126, + 51, + 237, + 232, + 245, + 236, + 64, + 68, + 226, + 52, + 251, + 84, + 122, + 250, + 95, + 22, + 97, + 33, + 49, + 39, + 4, + 117, + 65, + 30, + 202, + 109, + 228, + 250, + 96, + 13, + 90, + 87, + 217, + 246, + 44, + 243, + 231, + 143, + 238, + 47, + 72, + 96, + 250, + 242, + 26, + 222, + 199, + 240, + 191, + 204, + 40, + 12, + 0, + 205, + 191, + 114, + 161, + 216, + 24, + 39, + 163, + 166, + 9, + 136, + 235, + 123, + 214, + 41, + 56, + 186, + 97, + 33, + 109, + 231, + 223, + 22, + 36, + 108, + 106, + 23, + 57, + 149, + 85, + 63, + 127, + 204, + 37, + 219, + 40, + 40, + 176, + 44, + 67, + 155, + 133, + 35, + 137, + 84, + 121, + 186, + 254, + 202, + 69, + 73, + 130, + 206, + 194, + 189, + 62, + 131, + 136, + 140, + 6, + 19, + 250, + 105, + 252, + 151, + 220, + 63, + 87, + 192, + 116, + 171, + 52, + 37, + 147, + 227, + 244, + 187, + 96, + 56, + 249, + 252, + 110, + 231, + 210, + 148, + 13, + 11, + 75, + 172, + 192, + 80, + 139, + 128, + 99, + 252, + 41, + 13, + 237, + 76, + 156, + 190, + 55, + 83, + 234, + 100, + 54, + 14, + 217, + 227, + 207, + 194, + 7, + 56, + 123, + 157, + 238, + 254, + 21, + 130, + 108, + 2, + 205, + 161, + 47, + 139, + 145, + 168, + 71, + 99, + 43, + 174, + 169, + 66, + 30, + 182, + 75, + 81, + 2, + 7, + 154, + 9, + 85, + 248, + 202, + 205, + 236, + 126, + 104, + 254, + 134, + 138, + 104, + 118, + 169, + 195, + 115, + 230, + 245, + 193, + 91, + 86, + 76, + 37, + 192, + 195, + 24, + 21, + 165, + 251, + 165, + 137, + 238, + 149, + 219, + 127, + 119, + 223, + 78, + 254, + 121, + 248, + 155, + 225, + 107, + 111, + 188, + 191, + 97, + 180, + 105, + 12, + 34, + 63, + 31, + 231, + 25, + 74, + 4, + 83, + 35, + 188, + 68, + 183, + 34, + 3, + 112, + 84, + 214, + 162, + 223, + 101, + 83, + 15, + 218, + 45, + 232, + 170, + 147, + 125, + 37, + 217, + 239, + 48, + 211, + 82, + 88, + 38, + 242, + 9, + 15, + 138, + 246, + 78, + 4, + 202, + 24, + 86, + 58, + 185, + 222, + 77, + 186, + 242, + 97, + 31, + 175, + 65, + 138, + 40, + 10, + 110, + 67, + 226, + 33, + 25, + 157, + 215, + 255, + 77, + 251, + 96, + 199, + 18, + 101, + 252, + 169, + 72, + 200, + 10, + 66, + 158, + 117, + 37, + 225, + 78, + 149, + 166, + 155, + 68, + 108, + 196, + 193, + 215, + 221, + 32, + 239, + 59, + 32, + 251, + 248, + 162, + 227, + 75, + 2, + 221, + 59, + 46, + 190, + 119, + 248, + 212, + 171, + 5, + 180, + 89, + 250, + 223, + 46, + 162, + 71, + 145, + 120, + 154, + 166, + 181, + 200, + 135, + 125, + 197, + 106, + 74, + 94, + 94, + 151, + 41, + 81, + 248, + 177, + 187, + 255, + 194, + 240, + 91, + 24, + 113, + 84, + 217, + 139, + 146, + 89, + 77, + 148, + 92, + 186, + 210, + 21, + 174, + 35, + 166, + 56, + 249, + 128, + 222, + 146, + 78, + 189, + 129, + 162, + 120, + 118, + 6, + 133, + 252, + 189, + 22, + 102, + 224, + 167, + 18, + 205, + 148, + 104, + 228, + 109, + 173, + 81, + 96, + 48, + 235, + 141, + 162, + 93, + 168, + 198, + 47, + 210, + 0, + 181, + 98, + 118, + 248, + 205, + 249, + 238, + 149, + 251, + 184, + 212, + 45, + 177, + 135, + 11, + 124, + 102, + 45, + 234, + 238, + 76, + 82, + 48, + 93, + 75, + 90, + 243, + 88, + 11, + 200, + 57, + 64, + 114, + 55, + 64, + 233, + 201, + 249, + 180, + 200, + 174, + 199, + 6, + 87, + 60, + 129, + 35, + 165, + 126, + 110, + 210, + 129, + 146, + 154, + 195, + 176, + 30, + 120, + 42, + 190, + 72, + 75, + 19, + 114, + 231, + 201, + 192, + 39, + 184, + 195, + 246, + 82, + 8, + 41, + 250, + 95, + 76, + 147, + 192, + 29, + 164, + 240, + 93, + 229, + 92, + 29, + 152, + 73, + 176, + 218, + 191, + 168, + 55, + 73, + 136, + 240, + 218, + 142, + 241, + 13, + 221, + 188, + 174, + 40, + 193, + 37, + 160, + 221, + 6, + 111, + 98, + 21, + 66, + 108, + 41, + 11, + 240, + 52, + 59, + 81, + 254, + 12, + 132, + 129, + 132, + 113, + 50, + 137, + 93, + 246, + 54, + 109, + 233, + 184, + 230, + 150, + 172, + 65, + 113, + 38, + 154, + 230, + 160, + 157, + 234, + 20, + 98, + 38, + 146, + 105, + 111, + 64, + 23, + 196, + 35, + 183, + 134, + 187, + 45, + 107, + 86, + 73, + 14, + 157, + 225, + 11, + 186, + 198, + 206, + 100, + 36, + 253, + 189, + 194, + 68, + 207, + 182, + 19, + 236, + 215, + 231, + 173, + 198, + 57, + 246, + 123, + 145, + 42, + 139, + 92, + 165, + 101, + 170, + 198, + 180, + 160, + 52, + 103, + 110, + 170, + 235, + 169, + 83, + 132, + 144, + 121, + 158, + 225, + 5, + 206, + 68, + 219, + 231, + 143, + 213, + 103, + 151, + 39, + 175, + 103, + 225, + 185, + 83, + 135, + 238, + 96, + 9, + 62, + 132, + 132, + 188, + 216, + 188, + 208, + 255, + 213, + 73, + 220, + 33, + 8, + 147, + 208, + 181, + 21, + 15, + 173, + 23, + 96, + 73, + 41, + 212, + 150, + 154, + 109, + 184, + 177, + 203, + 84, + 185, + 201, + 10, + 81, + 181, + 6, + 185, + 1, + 114, + 209, + 77, + 200, + 224, + 5, + 201, + 51, + 147, + 86, + 3, + 40, + 134, + 29, + 39, + 22, + 134, + 239, + 209, + 157, + 236, + 76, + 145, + 97, + 209, + 208, + 201, + 89, + 91, + 53, + 77, + 97, + 221, + 255, + 136, + 76, + 21, + 124, + 51, + 26, + 140, + 71, + 106, + 182, + 123, + 134, + 154, + 96, + 100, + 116, + 218, + 191, + 192, + 226, + 42, + 238, + 187, + 30, + 55, + 32, + 69, + 240, + 118, + 79, + 246, + 252, + 36, + 211, + 83, + 127, + 199, + 152, + 110, + 26, + 100, + 212, + 235, + 3, + 107, + 37, + 63, + 64, + 91, + 103, + 237, + 240, + 190, + 77, + 251, + 111, + 240, + 219, + 247, + 126, + 114, + 213, + 186, + 105, + 118, + 213, + 75, + 237, + 121, + 16, + 138, + 244, + 161, + 238, + 46, + 1, + 252, + 43, + 248, + 65, + 77, + 34, + 82, + 85, + 150, + 94, + 218, + 191, + 234, + 197, + 114, + 251, + 122, + 209, + 130, + 112, + 76, + 70, + 31, + 190, + 206, + 222, + 13, + 89, + 45, + 63, + 201, + 31, + 89, + 108, + 202, + 99, + 25, + 62, + 180, + 9, + 94, + 47, + 223, + 64, + 128, + 135, + 24, + 174, + 105, + 49, + 76, + 144, + 106, + 248, + 108, + 12, + 248, + 20, + 23, + 132, + 40, + 222, + 81, + 212, + 243, + 204, + 77, + 97, + 68, + 2, + 44, + 99, + 42, + 245, + 121, + 205, + 80, + 72, + 187, + 205, + 243, + 99, + 107, + 49, + 254, + 246, + 229, + 150, + 122, + 212, + 5, + 199, + 182, + 206, + 140, + 95, + 26, + 18, + 213, + 139, + 120, + 39, + 213, + 150, + 33, + 113, + 93, + 171, + 64, + 20, + 239, + 241, + 7, + 237, + 89, + 237, + 118, + 254, + 205, + 70, + 36, + 19, + 130, + 172, + 51, + 97, + 65, + 171, + 225, + 148, + 97, + 15, + 176, + 63, + 95, + 227, + 168, + 110, + 22, + 181, + 160, + 58, + 58, + 193, + 244, + 175, + 191, + 141, + 227, + 159, + 1, + 146, + 227, + 101, + 35, + 27, + 199, + 36, + 241, + 189, + 170, + 4, + 235, + 238, + 58, + 233, + 65, + 75, + 192, + 21, + 97, + 146, + 159, + 74, + 68, + 0, + 80, + 71, + 52, + 193, + 75, + 71, + 228, + 205, + 71, + 176, + 150, + 218, + 144, + 205, + 196, + 252, + 117, + 176, + 134, + 11, + 166, + 194, + 4, + 192, + 10, + 1, + 93, + 16, + 125, + 2, + 211, + 62, + 221, + 181, + 186, + 180, + 157, + 30, + 42, + 78, + 153, + 168, + 127, + 192, + 138, + 82, + 23, + 156, + 222, + 162, + 84, + 53, + 212, + 40, + 150, + 141, + 89, + 101, + 110, + 11, + 128, + 214, + 108, + 97, + 245, + 18, + 33, + 190, + 102, + 48, + 108, + 28, + 98, + 67, + 38, + 51, + 44, + 6, + 221, + 22, + 186, + 75, + 148, + 164, + 64, + 55, + 168, + 193, + 94, + 14, + 124, + 247, + 197, + 252, + 103, + 23, + 6, + 167, + 102, + 60, + 191, + 42, + 8, + 11, + 56, + 237, + 25, + 197, + 56, + 190, + 22, + 241, + 192, + 217, + 159, + 204, + 94, + 65, + 38, + 236, + 0, + 69, + 219, + 53, + 137, + 179, + 107, + 74, + 181, + 114, + 181, + 146, + 200, + 184, + 215, + 180, + 9, + 219, + 65, + 80, + 37, + 95, + 90, + 126, + 78, + 198, + 175, + 252, + 135, + 124, + 250, + 152, + 45, + 116, + 60, + 38, + 143, + 140, + 177, + 36, + 210, + 163, + 176, + 42, + 157, + 130, + 146, + 188, + 147, + 214, + 113, + 231, + 172, + 207, + 19, + 125, + 49, + 10, + 238, + 185, + 34, + 213, + 66, + 102, + 103, + 250, + 28, + 233, + 114, + 207, + 252, + 220, + 58, + 10, + 143, + 34, + 149, + 103, + 29, + 199, + 195, + 132, + 243, + 156, + 77, + 92, + 192, + 253, + 119, + 155, + 31, + 170, + 231, + 132, + 200, + 227, + 72, + 179, + 66, + 1, + 210, + 195, + 73, + 151, + 73, + 209, + 206, + 8, + 227, + 93, + 26, + 121, + 77, + 95, + 95, + 9, + 116, + 129, + 244, + 214, + 121, + 31, + 99, + 175, + 182, + 241, + 195, + 57, + 5, + 170, + 56, + 150, + 198, + 219, + 90, + 111, + 221, + 20, + 18, + 3, + 198, + 229, + 207, + 59, + 42, + 77, + 209, + 124, + 108, + 71, + 163, + 137, + 61, + 36, + 23, + 47, + 6, + 242, + 114, + 162, + 175, + 167, + 172, + 79, + 143, + 58, + 75, + 13, + 242, + 110, + 116, + 144, + 29, + 57, + 153, + 121, + 134, + 114, + 161, + 157, + 246, + 44, + 157, + 40, + 54, + 19, + 229, + 108, + 244, + 137, + 153, + 43, + 216, + 90, + 147, + 53, + 224, + 158, + 193, + 124, + 17, + 251, + 132, + 206, + 80, + 21, + 41, + 243, + 84, + 177, + 39, + 189, + 55, + 67, + 223, + 90, + 145, + 141, + 242, + 206, + 103, + 164, + 235, + 250, + 248, + 54, + 203, + 24, + 213, + 91, + 211, + 37, + 254, + 102, + 252, + 136, + 197, + 110, + 184, + 113, + 130, + 36, + 46, + 225, + 29, + 236, + 183, + 212, + 254, + 34, + 92, + 76, + 125, + 248, + 35, + 122, + 247, + 128, + 151, + 28, + 113, + 115, + 158, + 94, + 220, + 108, + 92, + 84, + 69, + 32, + 114, + 118, + 81, + 235, + 244, + 128, + 213, + 14, + 234, + 168, + 189, + 121, + 239, + 1, + 88, + 75, + 60, + 49, + 120, + 231, + 200, + 157, + 139, + 8, + 101, + 210, + 20, + 250, + 187, + 240, + 65, + 53, + 105, + 98, + 242, + 85, + 73, + 152, + 20, + 124, + 16, + 54, + 67, + 228, + 87, + 253, + 92, + 184, + 72, + 118, + 235, + 229, + 0, + 109, + 185, + 179, + 204, + 65, + 41, + 8, + 23, + 232, + 188, + 248, + 46, + 76, + 226, + 19, + 216, + 94, + 132, + 97, + 165, + 36, + 10, + 213, + 231, + 162, + 35, + 227, + 224, + 253, + 212, + 198, + 93, + 128, + 188, + 119, + 175, + 54, + 12, + 244, + 1, + 21, + 7, + 219, + 125, + 124, + 142, + 208, + 83, + 68, + 203, + 101, + 5, + 141, + 182, + 163, + 119, + 102, + 203, + 241, + 209, + 190, + 1, + 134, + 194, + 112, + 62, + 222, + 140, + 213, + 102, + 77, + 217, + 84, + 68, + 62, + 153, + 84, + 222, + 31, + 122, + 189, + 204, + 49, + 223, + 248, + 98, + 157, + 15, + 37, + 95, + 65, + 218, + 211, + 28, + 194, + 221, + 152, + 76, + 138, + 92, + 248, + 34, + 95, + 153, + 65, + 43, + 194, + 41, + 123, + 62, + 100, + 227, + 240, + 108, + 36, + 167, + 70, + 158, + 82, + 227, + 213, + 167, + 149, + 123, + 243, + 156, + 209, + 110, + 75, + 215, + 72, + 97, + 212, + 103, + 25, + 83, + 165, + 164, + 199, + 98, + 167, + 255, + 219, + 224, + 247, + 226, + 218, + 250, + 143, + 229, + 102, + 110, + 104, + 17, + 237, + 244, + 160, + 235, + 27, + 58, + 56, + 82, + 18, + 50, + 233, + 223, + 158, + 112, + 200, + 144, + 206, + 2, + 162, + 184, + 15, + 57, + 42, + 22, + 53, + 148, + 230, + 122, + 216, + 40, + 239, + 100, + 7, + 20, + 64, + 229, + 79, + 40, + 97, + 14, + 94, + 34, + 101, + 185, + 224, + 83, + 185, + 113, + 19, + 52, + 241, + 71, + 49, + 29, + 57, + 94, + 12, + 173, + 32, + 1, + 88, + 161, + 185, + 20, + 185, + 86, + 109, + 200, + 46, + 52, + 71, + 107, + 58, + 169, + 155, + 202, + 159, + 90, + 147, + 173, + 69, + 177, + 232, + 86, + 70, + 13, + 222, + 70, + 154, + 40, + 255, + 204, + 228, + 79, + 103, + 131, + 170, + 90, + 144, + 82, + 12, + 144, + 98, + 46, + 145, + 156, + 121, + 68, + 49, + 95, + 42, + 67, + 152, + 83, + 251, + 150, + 66, + 116, + 240, + 228, + 97, + 243, + 13, + 91, + 152, + 30, + 38, + 209, + 207, + 156, + 129, + 219, + 230, + 204, + 185, + 41, + 141, + 85, + 9, + 100, + 238, + 69, + 97, + 1, + 98, + 167, + 209, + 104, + 169, + 53, + 220, + 44, + 140, + 239, + 208, + 20, + 218, + 141, + 60, + 178, + 68, + 98, + 136, + 242, + 98, + 199, + 10, + 104, + 99, + 14, + 139, + 133, + 216, + 232, + 83, + 71, + 152, + 169, + 229, + 39, + 196, + 235, + 160, + 25, + 99, + 94, + 4, + 86, + 152, + 214, + 53, + 120, + 239, + 36, + 42, + 173, + 72, + 54, + 70, + 228, + 245, + 188, + 165, + 22, + 129, + 235, + 38, + 72, + 118, + 53, + 191, + 252, + 239, + 134, + 33, + 208, + 98, + 142, + 171, + 105, + 147, + 203, + 224, + 182, + 187, + 148, + 115, + 219, + 56, + 168, + 45, + 180, + 240, + 66, + 212, + 152, + 193, + 33, + 244, + 252, + 195, + 248, + 223, + 197, + 181, + 231, + 130, + 1, + 130, + 108, + 168, + 227, + 179, + 121, + 69, + 205, + 138, + 153, + 232, + 60, + 12, + 152, + 203, + 54, + 123, + 220, + 27, + 149, + 21, + 123, + 26, + 204, + 47, + 232, + 183, + 104, + 38, + 244, + 108, + 85, + 168, + 90, + 154, + 53, + 6, + 7, + 182, + 202, + 61, + 185, + 235, + 26, + 29, + 132, + 224, + 173, + 213, + 215, + 88, + 186, + 164, + 180, + 218, + 186, + 160, + 114, + 252, + 66, + 125, + 165, + 243, + 24, + 225, + 24, + 25, + 180, + 109, + 28, + 9, + 234, + 23, + 130, + 225, + 2, + 19, + 227, + 33, + 84, + 72, + 65, + 149, + 174, + 126, + 194, + 64, + 96, + 33, + 240, + 237, + 200, + 171, + 136, + 26, + 35, + 59, + 124, + 192, + 94, + 217, + 38, + 61, + 152, + 219, + 220, + 114, + 243, + 112, + 16, + 167, + 9, + 177, + 5, + 13, + 82, + 184, + 129, + 204, + 165, + 251, + 177, + 247, + 236, + 145, + 59, + 207, + 76, + 52, + 210, + 70, + 177, + 196, + 15, + 173, + 209, + 16, + 242, + 41, + 204, + 176, + 247, + 127, + 251, + 136, + 228, + 128, + 154, + 140, + 200, + 149, + 34, + 102, + 29, + 217, + 177, + 196, + 207, + 19, + 73, + 50, + 205, + 0, + 103, + 110, + 240, + 95, + 75, + 48, + 84, + 132, + 163, + 115, + 119, + 212, + 129, + 175, + 173, + 252, + 58, + 36, + 111, + 27, + 229, + 103, + 204, + 36, + 220, + 152, + 236, + 45, + 166, + 50, + 94, + 63, + 252, + 75, + 22, + 26, + 35, + 108, + 191, + 192, + 139, + 99, + 111, + 48, + 53, + 225, + 158, + 212, + 98, + 242, + 193, + 225, + 135, + 246, + 177, + 235, + 251, + 145, + 185, + 195, + 0, + 155, + 68, + 157, + 112, + 232, + 21, + 38, + 144, + 218, + 192, + 12, + 239, + 219, + 178, + 54, + 73, + 77, + 96, + 50, + 169, + 102, + 91, + 195, + 84, + 102, + 49, + 54, + 164, + 239, + 59, + 96, + 189, + 90, + 2, + 136, + 69, + 146, + 229, + 40, + 60, + 75, + 182, + 26, + 253, + 139, + 103, + 8, + 5, + 253, + 112, + 122, + 78, + 102, + 190, + 8, + 60, + 194, + 179, + 10, + 103, + 62, + 166, + 54, + 215, + 26, + 248, + 219, + 251, + 41, + 34, + 191, + 81, + 232, + 189, + 238, + 218, + 165, + 240, + 166, + 139, + 240, + 206, + 71, + 117, + 117, + 0, + 125, + 127, + 32, + 163, + 218, + 151, + 135, + 4, + 157, + 170, + 29, + 14, + 186, + 248, + 119, + 138, + 0, + 99, + 254, + 93, + 232, + 125, + 178, + 230, + 132, + 240, + 226, + 151, + 139, + 168, + 42, + 17, + 243, + 223, + 103, + 230, + 111, + 229, + 161, + 128, + 149, + 59, + 218, + 8, + 3, + 38, + 42, + 160, + 134, + 21, + 180, + 135, + 210, + 40, + 215, + 184, + 40, + 106, + 134, + 125, + 15, + 77, + 68, + 26, + 29, + 225, + 246, + 38, + 227, + 229, + 13, + 142, + 225, + 193, + 214, + 108, + 177, + 66, + 71, + 46, + 57, + 110, + 213, + 196, + 136, + 177, + 102, + 187, + 104, + 12, + 213, + 30, + 154, + 147, + 236, + 231, + 195, + 144, + 10, + 38, + 141, + 192, + 132, + 26, + 172, + 126, + 19, + 208, + 98, + 162, + 197, + 3, + 18, + 2, + 5, + 176, + 12, + 77, + 234, + 246, + 71, + 66, + 148, + 130, + 239, + 156, + 56, + 142, + 128, + 162, + 168, + 83, + 151, + 247, + 201, + 134, + 140, + 243, + 139, + 99, + 247, + 164, + 124, + 78, + 175, + 1, + 32, + 25, + 240, + 29, + 88, + 206, + 210, + 208, + 237, + 149, + 94, + 149, + 81, + 53, + 241, + 28, + 97, + 234, + 150, + 87, + 135, + 48, + 25, + 247, + 246, + 133, + 45, + 11, + 141, + 83, + 114, + 28, + 216, + 114, + 93, + 83, + 227, + 168, + 104, + 10, + 85, + 175, + 135, + 138, + 250, + 37, + 105, + 93, + 73, + 118, + 132, + 198, + 183, + 155, + 117, + 46, + 47, + 205, + 64, + 114, + 121, + 74, + 70, + 240, + 16, + 232, + 201, + 254, + 170, + 58, + 124, + 9, + 97, + 191, + 204, + 114, + 60, + 218, + 90, + 145, + 203, + 70, + 88, + 244, + 49, + 137, + 155, + 237, + 199, + 68, + 182, + 80, + 251, + 61, + 101, + 7, + 135, + 208, + 247, + 222, + 135, + 141, + 143, + 24, + 148, + 173, + 97, + 158, + 247, + 117, + 42, + 37, + 209, + 5, + 193, + 101, + 120, + 52, + 233, + 185, + 226, + 225, + 43, + 192, + 210, + 60, + 162, + 157, + 24, + 105, + 98, + 48, + 209, + 234, + 78, + 114, + 206, + 186, + 156, + 37, + 81, + 235, + 50, + 80, + 98, + 83, + 74, + 153, + 14, + 209, + 203, + 212, + 165, + 88, + 181, + 135, + 81, + 52, + 15, + 172, + 204, + 77, + 203, + 169, + 89, + 255, + 80, + 149, + 96, + 116, + 53, + 61, + 250, + 133, + 119, + 183, + 141, + 160, + 217, + 22, + 124, + 216, + 210, + 236, + 179, + 94, + 84, + 203, + 150, + 107, + 217, + 89, + 164, + 5, + 239, + 223, + 85, + 61, + 223, + 138, + 147, + 218, + 227, + 180, + 13, + 149, + 169, + 174, + 47, + 196, + 213, + 202, + 119, + 158, + 87, + 211, + 127, + 129, + 94, + 148, + 254, + 204, + 205, + 114, + 26, + 209, + 161, + 30, + 111, + 119, + 150, + 148, + 252, + 252, + 190, + 9, + 224, + 14, + 15, + 50, + 29, + 190, + 93, + 71, + 138, + 6, + 207, + 50, + 27, + 249, + 39, + 232, + 40, + 84, + 174, + 101, + 131, + 166, + 27, + 35, + 39, + 230, + 55, + 96, + 36, + 232, + 33, + 84, + 249, + 151, + 109, + 214, + 178, + 227, + 155, + 251, + 7, + 166, + 12, + 19, + 81, + 57, + 0, + 249, + 23, + 116, + 58, + 146, + 9, + 244, + 168, + 212, + 133, + 87, + 58, + 124, + 205, + 1, + 10, + 136, + 86, + 137, + 97, + 45, + 162, + 166, + 49, + 124, + 27, + 241, + 98, + 107, + 222, + 186, + 182, + 179, + 222, + 62, + 214, + 169, + 11, + 182, + 94, + 229, + 181, + 1, + 71, + 142, + 166, + 212, + 93, + 21, + 187, + 118, + 86, + 0, + 252, + 90, + 11, + 114, + 45, + 239, + 162, + 173, + 33, + 157, + 164, + 190, + 213, + 46, + 168, + 79, + 44, + 186, + 255, + 216, + 147, + 224, + 230, + 213, + 22, + 66, + 183, + 11, + 234, + 168, + 239, + 4, + 102, + 101, + 145, + 76, + 129, + 245, + 124, + 182, + 234, + 13, + 64, + 226, + 213, + 117, + 191, + 238, + 188, + 10, + 240, + 100, + 125, + 86, + 121, + 242, + 213, + 32, + 151, + 9, + 130, + 67, + 9, + 55, + 1, + 246, + 170, + 50, + 38, + 127, + 128, + 135, + 12, + 41, + 170, + 46, + 73, + 64, + 11, + 46, + 114, + 144, + 123, + 178, + 35, + 88, + 97, + 180, + 224, + 74, + 20, + 199, + 0, + 95, + 81, + 117, + 238, + 79, + 111, + 39, + 171, + 207, + 201, + 243, + 102, + 133, + 208, + 121, + 169, + 54, + 40, + 173, + 192, + 161, + 32, + 174, + 215, + 35, + 38, + 148, + 73, + 209, + 247, + 50, + 61, + 70, + 229, + 200, + 222, + 19, + 102, + 53, + 17, + 81, + 55, + 209, + 52, + 75, + 116, + 86, + 248, + 29, + 124, + 95, + 21, + 222, + 59, + 31, + 60, + 238, + 22, + 107, + 190, + 122, + 252, + 209, + 101, + 229, + 51, + 167, + 59, + 217, + 75, + 116, + 189, + 115, + 202, + 78, + 109, + 21, + 183, + 99, + 59, + 120, + 142, + 236, + 96, + 162, + 169, + 196, + 60, + 114, + 181, + 138, + 55, + 208, + 145, + 48, + 26, + 42, + 57, + 238, + 241, + 223, + 233, + 57, + 110, + 61, + 88, + 221, + 104, + 125, + 255, + 112, + 218, + 161, + 54, + 100, + 9, + 219, + 183, + 24, + 228, + 48, + 180, + 67, + 201, + 178, + 190, + 37, + 142, + 125, + 54, + 19, + 212, + 223, + 200, + 238, + 173, + 70, + 33, + 124, + 232, + 237, + 113, + 236, + 246, + 249, + 54, + 4, + 250, + 247, + 99, + 116, + 120, + 162, + 89, + 144, + 244, + 52, + 142, + 197, + 180, + 143, + 146, + 51, + 11, + 173, + 177, + 110, + 127, + 247, + 129, + 48, + 243, + 10, + 73, + 30, + 167, + 55, + 124, + 132, + 55, + 213, + 135, + 49, + 94, + 26, + 138, + 51, + 29, + 46, + 17, + 132, + 128, + 229, + 51, + 135, + 215, + 115, + 19, + 180, + 74, + 121, + 43, + 62, + 148, + 22, + 72, + 98, + 210, + 82, + 15, + 36, + 173, + 47, + 116, + 136, + 54, + 244, + 252, + 231, + 157, + 114, + 33, + 11, + 193, + 110, + 10, + 98, + 190, + 106, + 68, + 252, + 204, + 140, + 21, + 196, + 49, + 124, + 163, + 186, + 203, + 147, + 224, + 95, + 152, + 176, + 190, + 83, + 59, + 75, + 160, + 126, + 212, + 46, + 65, + 205, + 138, + 216, + 39, + 13, + 195, + 176, + 53, + 162, + 133, + 121, + 29, + 51, + 63, + 90, + 35, + 236, + 1, + 86, + 223, + 147, + 201, + 154, + 252, + 32, + 134, + 248, + 153, + 144, + 10, + 226, + 60, + 188, + 40, + 202, + 234, + 135, + 176, + 197, + 84, + 33, + 140, + 103, + 218, + 181, + 236, + 77, + 254, + 211, + 95, + 126, + 126, + 224, + 121, + 17, + 91, + 115, + 194, + 104, + 234, + 222, + 3, + 217, + 94, + 166, + 27, + 169, + 193, + 38, + 233, + 117, + 0, + 239, + 92, + 155, + 240, + 64, + 166, + 202, + 72, + 155, + 6, + 169, + 181, + 0, + 79, + 130, + 100, + 232, + 76, + 250, + 112, + 184, + 113, + 151, + 29, + 164, + 106, + 57, + 26, + 26, + 28, + 51, + 147, + 94, + 212, + 214, + 11, + 175, + 23, + 62, + 149, + 147, + 235, + 228, + 216, + 60, + 120, + 104, + 157, + 169, + 136, + 172, + 160, + 214, + 59, + 59, + 242, + 142, + 47, + 16, + 102, + 150, + 149, + 208, + 133, + 74, + 102, + 65, + 104, + 108, + 14, + 222, + 169, + 204, + 71, + 164, + 154, + 40, + 58, + 6, + 45, + 239, + 143, + 38, + 52, + 243, + 17, + 225, + 73, + 46, + 41, + 173, + 76, + 197, + 224, + 78, + 37, + 47, + 190, + 180, + 4, + 96, + 76, + 198, + 28, + 15, + 135, + 117, + 86, + 130, + 133, + 2, + 146, + 163, + 246, + 88, + 34, + 105, + 46, + 247, + 12, + 5, + 141, + 57, + 126, + 131, + 211, + 170, + 97, + 161, + 171, + 15, + 254, + 119, + 149, + 130, + 138, + 105, + 4, + 113, + 101, + 60, + 75, + 164, + 83, + 209, + 141, + 213, + 217, + 141, + 195, + 221, + 241, + 244, + 204, + 244, + 149, + 146, + 16, + 67, + 3, + 94, + 58, + 175, + 156, + 126, + 23, + 139, + 92, + 166, + 193, + 42, + 210, + 152, + 91, + 173, + 209, + 145, + 146, + 124, + 190, + 5, + 237, + 107, + 158, + 235, + 166, + 178, + 214, + 38, + 159, + 235, + 194, + 240, + 3, + 131, + 57, + 2, + 77, + 221, + 60, + 242, + 33, + 4, + 240, + 141, + 7, + 10, + 69, + 57, + 245, + 79, + 144, + 240, + 59, + 207, + 249, + 40, + 181, + 51, + 220, + 208, + 253, + 87, + 52, + 13, + 128, + 200, + 47, + 96, + 118, + 118, + 224, + 154, + 98, + 71, + 87, + 251, + 87, + 29, + 86, + 131, + 89, + 253, + 1, + 50, + 129, + 228, + 86, + 217, + 37, + 0, + 64, + 155, + 26, + 132, + 227, + 116, + 56, + 14, + 33, + 250, + 218, + 245, + 52, + 133, + 3, + 224, + 69, + 174, + 76, + 87, + 156, + 141, + 81, + 130, + 0, + 0, + 116, + 244, + 114, + 78, + 217, + 143, + 207, + 46, + 194, + 254, + 191, + 3, + 82, + 65, + 40, + 32, + 49, + 144, + 25, + 60, + 140, + 28, + 123, + 99, + 169, + 152, + 143, + 225, + 82, + 163, + 189, + 248, + 11, + 81, + 183, + 235, + 120, + 245, + 118, + 141, + 148, + 87, + 116, + 121, + 3, + 48, + 32, + 108, + 88, + 0, + 137, + 150, + 122, + 26, + 214, + 155, + 173, + 8, + 28, + 112, + 168, + 45, + 5, + 52, + 38, + 162, + 41, + 182, + 126, + 107, + 203, + 152, + 119, + 25, + 53, + 29, + 110, + 246, + 97, + 33, + 143, + 34, + 134, + 143, + 179, + 23, + 198, + 171, + 115, + 198, + 29, + 127, + 78, + 55, + 163, + 5, + 118, + 53, + 6, + 154, + 76, + 93, + 140, + 74, + 61, + 156, + 184, + 118, + 171, + 112, + 10, + 79, + 31, + 185, + 220, + 225, + 2, + 204, + 18, + 121, + 124, + 16, + 2, + 122, + 128, + 228, + 248, + 60, + 244, + 118, + 195, + 179, + 215, + 96, + 84, + 124, + 163, + 92, + 150, + 56, + 99, + 56, + 42, + 251, + 255, + 87, + 235, + 69, + 97, + 199, + 172, + 122, + 6, + 70, + 57, + 207, + 178, + 240, + 61, + 100, + 81, + 17, + 97, + 117, + 192, + 96, + 190, + 36, + 0, + 59, + 80, + 61, + 48, + 71, + 213, + 202, + 56, + 68, + 234, + 136, + 119, + 84, + 169, + 209, + 226, + 99, + 85, + 57, + 230, + 46, + 229, + 119, + 89, + 200, + 225, + 71, + 50, + 164, + 150, + 221, + 94, + 10, + 242, + 149, + 171, + 94, + 241, + 131, + 45, + 228, + 156, + 181, + 108, + 116, + 107, + 214, + 131, + 39, + 225, + 143, + 163, + 80, + 242, + 182, + 31, + 88, + 119, + 144, + 80, + 21, + 246, + 47, + 255, + 239, + 51, + 110, + 113, + 251, + 139, + 177, + 155, + 126, + 206, + 24, + 20, + 199, + 89, + 152, + 5, + 242, + 225, + 242, + 136, + 65, + 145, + 79, + 55, + 21, + 66, + 126, + 69, + 205, + 229, + 31, + 222, + 168, + 16, + 161, + 61, + 59, + 216, + 212, + 32, + 66, + 73, + 24, + 80, + 193, + 119, + 5, + 103, + 75, + 98, + 95, + 127, + 197, + 217, + 104, + 215, + 78, + 190, + 125, + 235, + 141, + 173, + 159, + 44, + 210, + 134, + 167, + 28, + 254, + 238, + 246, + 10, + 252, + 183, + 9, + 37, + 37, + 163, + 39, + 75, + 235, + 235, + 20, + 191, + 224, + 230, + 47, + 255, + 237, + 45, + 2, + 97, + 141, + 27, + 84, + 248, + 103, + 205, + 184, + 104, + 79, + 104, + 241, + 183, + 129, + 67, + 153, + 105, + 150, + 91, + 69, + 153, + 97, + 3, + 80, + 97, + 229, + 131, + 223, + 29, + 218, + 59, + 21, + 69, + 51, + 55, + 99, + 48, + 44, + 249, + 56, + 195, + 232, + 145, + 5, + 191, + 166, + 38, + 192, + 90, + 6, + 73, + 208, + 58, + 168, + 116, + 30, + 235, + 4, + 236, + 201, + 194, + 79, + 45, + 87, + 237, + 97, + 35, + 199, + 137, + 115, + 0, + 136, + 241, + 135, + 235, + 51, + 171, + 66, + 250, + 77, + 98, + 41, + 172, + 176, + 24, + 35, + 12, + 161, + 68, + 124, + 162, + 67, + 225, + 179, + 149, + 128, + 23, + 74, + 249, + 60, + 187, + 172, + 35, + 238, + 167, + 124, + 158, + 54, + 170, + 29, + 205, + 101, + 101, + 74, + 172, + 221, + 147, + 240, + 14, + 147, + 36, + 58, + 223, + 221, + 21, + 145, + 77, + 169, + 116, + 11, + 193, + 255, + 28, + 76, + 45, + 190, + 60, + 26, + 79, + 53, + 248, + 94, + 21, + 245, + 60, + 96, + 209, + 79, + 235, + 12, + 103, + 145, + 158, + 69, + 53, + 196, + 201, + 60, + 164, + 83, + 92, + 111, + 197, + 191, + 8, + 66, + 181, + 49, + 120, + 239, + 109, + 59, + 66, + 193, + 182, + 100, + 93, + 170, + 164, + 16, + 5, + 171, + 76, + 179, + 181, + 11, + 116, + 177, + 89, + 67, + 109, + 181, + 148, + 86, + 233, + 125, + 190, + 221, + 123, + 23, + 144, + 187, + 144, + 241, + 186, + 107, + 131, + 31, + 16, + 182, + 13, + 236, + 8, + 11, + 105, + 52, + 71, + 255, + 116, + 146, + 84, + 131, + 29, + 40, + 162, + 229, + 176, + 43, + 32, + 102, + 23, + 113, + 18, + 28, + 246, + 85, + 252, + 120, + 175, + 178, + 255, + 128, + 97, + 151, + 22, + 179, + 175, + 201, + 15, + 87, + 56, + 148, + 94, + 134, + 156, + 26, + 240, + 111, + 1, + 250, + 96, + 43, + 125, + 223, + 209, + 69, + 180, + 235, + 86, + 44, + 169, + 99, + 97, + 223, + 136, + 118, + 8, + 102, + 131, + 167, + 248, + 56, + 174, + 44, + 229, + 67, + 170, + 243, + 214, + 148, + 185, + 24, + 157, + 149, + 211, + 148, + 166, + 166, + 239, + 93, + 251, + 52, + 4, + 86, + 2, + 27, + 185, + 118, + 224, + 25, + 249, + 107, + 143, + 92, + 110, + 117, + 185, + 200, + 71, + 140, + 250, + 174, + 239, + 79, + 198, + 212, + 232, + 94, + 100, + 250, + 106, + 244, + 151, + 124, + 23, + 243, + 64, + 185, + 205, + 133, + 36, + 207, + 9, + 255, + 29, + 42, + 60, + 154, + 228, + 219, + 138, + 227, + 255, + 169, + 174, + 141, + 193, + 10, + 237, + 147, + 149, + 150, + 200, + 99, + 120, + 4, + 201, + 143, + 255, + 67, + 92, + 96, + 74, + 164, + 75, + 82, + 161, + 207, + 164, + 43, + 24, + 144, + 171, + 236, + 117, + 162, + 210, + 12, + 201, + 9, + 84, + 180, + 222, + 89, + 34, + 32, + 126, + 186, + 116, + 16, + 61, + 160, + 127, + 176, + 34, + 19, + 217, + 35, + 27, + 85, + 102, + 133, + 233, + 25, + 11, + 121, + 189, + 34, + 73, + 137, + 69, + 21, + 50, + 154, + 8, + 67, + 104, + 221, + 133, + 61, + 175, + 113, + 251, + 153, + 164, + 136, + 12, + 74, + 226, + 143, + 83, + 168, + 5, + 128, + 140, + 164, + 117, + 235, + 77, + 235, + 202, + 226, + 122, + 136, + 59, + 195, + 212, + 81, + 222, + 229, + 43, + 253, + 166, + 27, + 247, + 162, + 186, + 179, + 31, + 68, + 160, + 210, + 43, + 219, + 58, + 177, + 141, + 139, + 126, + 116, + 96, + 225, + 31, + 76, + 62, + 20, + 39, + 77, + 29, + 113, + 85, + 184, + 184, + 178, + 11, + 177, + 66, + 35, + 26, + 145, + 133, + 29, + 108, + 255, + 225, + 116, + 241, + 178, + 20, + 46, + 89, + 43, + 50, + 139, + 211, + 172, + 149, + 38, + 143, + 202, + 71, + 108, + 205, + 225, + 25, + 136, + 16, + 132, + 85, + 216, + 45, + 131, + 31, + 249, + 137, + 63, + 194, + 178, + 158, + 239, + 64, + 237, + 4, + 233, + 121, + 47, + 209, + 63, + 103, + 185, + 165, + 79, + 241, + 37, + 221, + 244, + 143, + 80, + 188, + 248, + 8, + 205, + 127, + 246, + 201, + 32, + 45, + 125, + 51, + 80, + 51, + 244, + 171, + 190, + 99, + 233, + 129, + 190, + 7, + 188, + 42, + 158, + 113, + 114, + 26, + 140, + 246, + 0, + 84, + 135, + 82, + 88, + 4, + 147, + 144, + 90, + 162, + 115, + 121, + 0, + 181, + 133, + 13, + 159, + 219, + 150, + 29, + 46, + 1, + 255, + 196, + 151, + 13, + 64, + 58, + 207, + 28, + 79, + 90, + 96, + 112, + 179, + 237, + 11, + 210, + 107, + 138, + 170, + 127, + 78, + 117, + 237, + 201, + 204, + 190, + 171, + 79, + 87, + 251, + 242, + 45, + 27, + 188, + 196, + 173, + 146, + 217, + 80, + 245, + 100, + 154, + 75, + 168, + 199, + 255, + 208, + 225, + 9, + 143, + 166, + 215, + 118, + 221, + 87, + 244, + 215, + 206, + 30, + 171, + 165, + 159, + 9, + 112, + 173, + 179, + 16, + 57, + 77, + 80, + 215, + 208, + 190, + 157, + 131, + 96, + 90, + 73, + 0, + 221, + 225, + 8, + 190, + 24, + 125, + 40, + 154, + 24, + 245, + 136, + 11, + 254, + 212, + 201, + 168, + 148, + 194, + 38, + 198, + 127, + 130, + 67, + 70, + 108, + 13, + 204, + 227, + 162, + 123, + 18, + 244, + 207, + 215, + 236, + 144, + 29, + 125, + 219, + 173, + 30, + 184, + 214, + 189, + 158, + 216, + 71, + 230, + 218, + 87, + 110, + 140, + 119, + 175, + 244, + 240, + 16, + 204, + 84, + 13, + 68, + 84, + 253, + 234, + 213, + 224, + 158, + 48, + 80, + 250, + 237, + 91, + 108, + 151, + 37, + 117, + 176, + 193, + 19, + 229, + 178, + 69, + 211, + 179, + 31, + 184, + 76, + 199, + 74, + 30, + 199, + 77, + 54, + 20, + 211, + 248, + 196, + 190, + 225, + 32, + 228, + 149, + 33, + 89, + 175, + 46, + 145, + 175, + 101, + 201, + 173, + 25, + 120, + 125, + 222, + 217, + 74, + 168, + 54, + 46, + 104, + 111, + 223, + 229, + 156, + 101, + 236, + 5, + 114, + 135, + 33, + 202, + 168, + 236, + 187, + 37, + 8, + 253, + 42, + 171, + 224, + 48, + 187, + 53, + 131, + 115, + 172, + 93, + 149, + 184, + 44, + 167, + 116, + 251, + 109, + 193, + 129, + 170, + 129, + 170, + 143, + 61, + 6, + 51, + 132, + 109, + 117, + 237, + 13, + 64, + 191, + 100, + 11, + 178, + 220, + 239, + 231, + 160, + 170, + 131, + 178, + 151, + 116, + 21, + 183, + 163, + 186, + 109, + 87, + 87, + 150, + 161, + 75, + 76, + 249, + 117, + 52, + 22, + 68, + 164, + 119, + 157, + 12, + 206, + 175, + 188, + 181, + 222, + 38, + 26, + 31, + 236, + 180, + 98, + 77, + 50, + 10, + 217, + 55, + 226, + 201, + 100, + 247, + 214, + 54, + 164, + 15, + 126, + 195, + 12, + 125, + 48, + 70, + 76, + 146, + 124, + 234, + 168, + 21, + 117, + 13, + 164, + 65, + 107, + 105, + 142, + 158, + 153, + 92, + 133, + 168, + 27, + 141, + 170, + 106, + 52, + 42, + 194, + 29, + 102, + 199, + 148, + 210, + 130, + 59, + 86, + 0, + 46, + 4, + 151, + 145, + 101, + 177, + 33, + 92, + 84, + 53, + 186, + 195, + 250, + 121, + 56, + 113, + 96, + 251, + 135, + 38, + 184, + 181, + 174, + 10, + 32, + 133, + 214, + 92, + 201, + 141, + 94, + 55, + 218, + 194, + 200, + 244, + 205, + 246, + 192, + 57, + 7, + 39, + 210, + 183, + 249, + 208, + 208, + 84, + 18, + 127, + 35, + 132, + 115, + 165, + 2, + 60, + 126, + 0, + 137, + 33, + 64, + 77, + 203, + 161, + 42, + 217, + 46, + 147, + 156, + 115, + 152, + 14, + 64, + 134, + 161, + 4, + 240, + 142, + 107, + 58, + 15, + 119, + 47, + 66, + 150, + 6, + 41, + 236, + 202, + 200, + 113, + 49, + 203, + 127, + 242, + 61, + 38, + 169, + 14, + 141, + 254, + 2, + 250, + 198, + 221, + 75, + 238, + 37, + 35, + 194, + 6, + 82, + 210, + 121, + 31, + 120, + 108, + 199, + 207, + 51, + 44, + 208, + 73, + 101, + 154, + 233, + 55, + 20, + 194, + 143, + 126, + 95, + 180, + 46, + 184, + 202, + 78, + 123, + 59, + 159, + 31, + 166, + 252, + 225, + 20, + 210, + 123, + 198, + 43, + 110, + 205, + 30, + 104, + 124, + 73, + 245, + 93, + 42, + 66, + 115, + 107, + 246, + 36, + 149, + 245, + 242, + 217, + 204, + 167, + 61, + 70, + 201, + 120, + 149, + 47, + 122, + 126, + 252, + 15, + 10, + 251, + 219, + 119, + 25, + 210, + 154, + 158, + 255, + 247, + 179, + 5, + 190, + 187, + 39, + 79, + 40, + 245, + 135, + 62, + 70, + 223, + 15, + 137, + 127, + 137, + 1, + 94, + 94, + 87, + 40, + 175, + 168, + 149, + 178, + 107, + 128, + 41, + 6, + 77, + 89, + 1, + 88, + 14, + 11, + 150, + 151, + 44, + 97, + 99, + 203, + 182, + 80, + 103, + 72, + 86, + 63, + 49, + 77, + 29, + 63, + 107, + 202, + 86, + 17, + 140, + 248, + 17, + 198, + 62, + 24, + 156, + 247, + 228, + 224, + 196, + 2, + 113, + 248, + 192, + 249, + 143, + 253, + 190, + 79, + 252, + 148, + 110, + 199, + 0, + 42, + 216, + 6, + 129, + 255, + 109, + 30, + 3, + 65, + 230, + 73, + 65, + 217, + 106, + 68, + 90, + 171, + 190, + 91, + 163, + 113, + 216, + 66, + 171, + 224, + 213, + 70, + 173, + 166, + 181, + 30, + 32, + 28, + 196, + 205, + 0, + 68, + 177, + 160, + 99, + 118, + 100, + 32, + 128, + 78, + 134, + 222, + 0, + 98, + 222, + 87, + 7, + 102, + 251, + 175, + 148, + 34, + 230, + 92, + 53, + 226, + 212, + 106, + 233, + 49, + 29, + 231, + 84, + 67, + 42, + 3, + 230, + 35, + 152, + 10, + 186, + 199, + 100, + 95, + 196, + 173, + 94, + 192, + 43, + 121, + 229, + 187, + 153, + 248, + 102, + 30, + 247, + 243, + 17, + 209, + 146, + 169, + 15, + 36, + 59, + 110, + 12, + 247, + 121, + 110, + 199, + 143, + 42, + 91, + 166, + 234, + 243, + 240, + 223, + 249, + 168, + 138, + 74, + 107, + 131, + 53, + 225, + 168, + 11, + 112, + 187, + 124, + 200, + 185, + 232, + 95, + 124, + 86, + 48, + 90, + 153, + 148, + 61, + 140, + 218, + 126, + 179, + 179, + 64, + 38, + 254, + 176, + 35, + 146, + 110, + 183, + 8, + 228, + 199, + 62, + 20, + 44, + 150, + 129, + 160, + 15, + 10, + 217, + 44, + 42, + 101, + 188, + 244, + 88, + 52, + 225, + 7, + 49, + 50, + 114, + 12, + 156, + 121, + 235, + 238, + 149, + 190, + 75, + 21, + 236, + 143, + 87, + 229, + 198, + 90, + 18, + 48, + 26, + 190, + 66, + 178, + 70, + 181, + 44, + 141, + 166, + 68, + 17, + 252, + 58, + 178, + 14, + 239, + 236, + 68, + 136, + 61, + 161, + 227, + 207, + 10, + 118, + 209, + 232, + 94, + 20, + 57, + 23, + 76, + 247, + 32, + 58, + 7, + 167, + 198, + 55, + 207, + 19, + 139, + 229, + 164, + 231, + 155, + 108, + 228, + 105, + 158, + 81, + 100, + 114, + 226, + 235, + 21, + 31, + 221, + 168, + 3, + 205, + 93, + 192, + 48, + 156, + 231, + 35, + 194, + 120, + 98, + 227, + 139, + 48, + 154, + 17, + 189, + 7, + 18, + 249, + 218, + 238, + 189, + 26, + 118, + 190, + 149, + 119, + 172, + 201, + 36, + 106, + 46, + 94, + 143, + 38, + 0, + 94, + 152, + 192, + 91, + 144, + 45, + 25, + 157, + 58, + 216, + 101, + 70, + 45, + 116, + 5, + 213, + 180, + 15, + 228, + 96, + 194, + 137, + 242, + 16, + 174, + 96, + 73, + 168, + 31, + 81, + 179, + 177, + 166, + 96, + 7, + 9, + 45, + 230, + 150, + 35, + 227, + 19, + 255, + 202, + 121, + 254, + 110, + 163, + 104, + 92, + 111, + 211, + 69, + 201, + 225, + 142, + 165, + 22, + 147, + 64, + 55, + 70, + 238, + 110, + 214, + 71, + 164, + 69, + 122, + 251, + 242, + 118, + 169, + 229, + 214, + 225, + 4, + 207, + 121, + 57, + 168, + 238, + 186, + 82, + 194, + 159, + 254, + 169, + 249, + 175, + 152, + 47, + 224, + 171, + 243, + 217, + 217, + 123, + 101, + 199, + 27, + 28, + 201, + 87, + 45, + 84, + 174, + 79, + 7, + 200, + 19, + 246, + 45, + 7, + 95, + 243, + 223, + 35, + 145, + 246, + 134, + 249, + 225, + 40, + 212, + 223, + 90, + 167, + 230, + 228, + 190, + 106, + 209, + 67, + 2, + 230, + 247, + 75, + 69, + 72, + 235, + 218, + 236, + 224, + 209, + 43, + 41, + 95, + 35, + 196, + 163, + 44, + 57, + 64, + 119, + 49, + 20, + 213, + 157, + 176, + 169, + 99, + 54, + 134, + 104, + 106, + 193, + 133, + 251, + 176, + 71, + 89, + 140, + 52, + 203, + 177, + 78, + 201, + 152, + 1, + 92, + 199, + 165, + 112, + 206, + 53, + 35, + 52, + 249, + 214, + 250, + 143, + 69, + 54, + 40, + 218, + 189, + 213, + 200, + 3, + 33, + 24, + 68, + 205, + 225, + 190, + 145, + 56, + 161, + 8, + 154, + 106, + 184, + 125, + 242, + 35, + 66, + 102, + 227, + 198, + 13, + 236, + 162, + 121, + 202, + 203, + 148, + 17, + 3, + 169, + 47, + 60, + 246, + 24, + 102, + 135, + 34, + 22, + 158, + 181, + 30, + 202, + 242, + 32, + 194, + 7, + 211, + 184, + 239, + 89, + 114, + 248, + 181, + 117, + 89, + 215, + 43, + 141, + 252, + 239, + 129, + 93, + 183, + 96, + 102, + 90, + 231, + 38, + 148, + 98, + 242, + 43, + 91, + 247, + 200, + 39, + 94, + 58, + 108, + 214, + 135, + 188, + 118, + 211, + 213, + 161, + 201, + 87, + 15, + 192, + 235, + 177, + 209, + 120, + 177, + 207, + 106, + 170, + 36, + 121, + 234, + 72, + 198, + 45, + 195, + 186, + 217, + 246, + 210, + 72, + 32, + 97, + 112, + 68, + 187, + 105, + 210, + 75, + 174, + 120, + 215, + 144, + 23, + 223, + 85, + 211, + 207, + 245, + 98, + 95, + 7, + 181, + 151, + 243, + 128, + 197, + 122, + 91, + 223, + 244, + 185, + 191, + 33, + 37, + 206, + 230, + 0, + 197, + 216, + 69, + 239, + 23, + 200, + 169, + 43, + 66, + 184, + 20, + 75, + 28, + 88, + 1, + 105, + 193, + 22, + 244, + 67, + 156, + 40, + 45, + 132, + 119, + 109, + 126, + 46, + 115, + 4, + 162, + 189, + 246, + 175, + 99, + 70, + 131, + 162, + 39, + 129, + 132, + 115, + 30, + 235, + 106, + 232, + 83, + 74, + 158, + 70, + 149, + 141, + 90, + 186, + 146, + 90, + 124, + 3, + 179, + 211, + 211, + 180, + 43, + 226, + 156, + 244, + 144, + 188, + 202, + 199, + 162, + 127, + 139, + 16, + 184, + 200, + 250, + 140, + 62, + 132, + 224, + 41, + 36, + 68, + 183, + 129, + 29, + 203, + 63, + 240, + 38, + 26, + 239, + 179, + 219, + 42, + 112, + 250, + 204, + 62, + 13, + 248, + 194, + 19, + 128, + 198, + 87, + 34, + 157, + 188, + 140, + 144, + 42, + 59, + 16, + 159, + 182, + 86, + 95, + 82, + 216, + 243, + 75, + 150, + 227, + 25, + 84, + 105, + 84, + 219, + 32, + 66, + 178, + 29, + 136, + 218, + 178, + 231, + 51, + 166, + 21, + 22, + 148, + 188, + 101, + 21, + 169, + 99, + 224, + 181, + 43, + 199, + 125, + 8, + 18, + 145, + 161, + 177, + 55, + 32, + 167, + 85, + 77, + 209, + 76, + 147, + 26, + 57, + 63, + 80, + 40, + 220, + 124, + 25, + 111, + 222, + 41, + 81, + 167, + 204, + 67, + 210, + 23, + 176, + 1, + 6, + 54, + 140, + 151, + 115, + 112, + 83, + 117, + 251, + 28, + 92, + 75, + 225, + 125, + 10, + 1, + 254, + 48, + 243, + 103, + 162, + 63, + 13, + 148, + 36, + 34, + 18, + 110, + 144, + 252, + 76, + 32, + 250, + 217, + 140, + 157, + 109, + 195, + 239, + 9, + 27, + 48, + 212, + 132, + 144, + 85, + 178, + 143, + 149, + 77, + 158, + 134, + 147, + 251, + 0, + 9, + 138, + 222, + 175, + 72, + 229, + 32, + 171, + 20, + 254, + 79, + 224, + 28, + 116, + 184, + 138, + 31, + 242, + 124, + 17, + 160, + 177, + 70, + 37, + 41, + 26, + 23, + 200, + 78, + 86, + 144, + 72, + 162, + 145, + 13, + 214, + 49, + 87, + 27, + 203, + 184, + 182, + 249, + 142, + 79, + 195, + 170, + 106, + 230, + 48, + 152, + 182, + 128, + 51, + 177, + 45, + 187, + 236, + 66, + 133, + 200, + 41, + 164, + 22, + 117, + 236, + 148, + 9, + 123, + 205, + 34, + 150, + 81, + 239, + 241, + 200, + 41, + 56, + 97, + 6, + 186, + 152, + 25, + 115, + 221, + 79, + 82, + 194, + 23, + 57, + 204, + 82, + 255, + 19, + 216, + 147, + 104, + 229, + 22, + 0, + 152, + 189, + 30, + 0, + 124, + 132, + 179, + 237, + 109, + 170, + 178, + 215, + 253, + 244, + 248, + 217, + 24, + 40, + 151, + 227, + 16, + 162, + 92, + 113, + 169, + 233, + 62, + 181, + 21, + 174, + 154, + 196, + 253, + 187, + 232, + 204, + 106, + 234, + 137, + 197, + 136, + 10, + 164, + 122, + 232, + 123, + 200, + 164, + 23, + 167, + 1, + 65, + 150, + 53, + 224, + 229, + 93, + 33, + 249, + 202, + 106, + 60, + 81, + 216, + 174, + 203, + 171, + 205, + 24, + 27, + 62, + 143, + 220, + 111, + 43, + 199, + 3, + 138, + 103, + 103, + 109, + 60, + 206, + 153, + 54, + 144, + 241, + 61, + 33, + 61, + 158, + 36, + 157, + 17, + 226, + 31, + 150, + 44, + 191, + 252, + 9, + 159, + 32, + 187, + 251, + 238, + 206, + 140, + 4, + 98, + 60, + 135, + 169, + 196, + 21, + 46, + 163, + 217, + 164, + 24, + 50, + 80, + 141, + 114, + 30, + 179, + 109, + 171, + 255, + 200, + 183, + 188, + 250, + 210, + 65, + 240, + 85, + 150, + 132, + 34, + 28, + 235, + 47, + 37, + 79, + 144, + 118, + 80, + 114, + 58, + 37, + 5, + 24, + 64, + 188, + 228, + 165, + 136, + 184, + 163, + 227, + 188, + 86, + 147, + 42, + 63, + 106, + 82, + 110, + 100, + 211, + 243, + 44, + 83, + 39, + 175, + 245, + 199, + 71, + 188, + 110, + 131, + 71, + 19, + 80, + 177, + 96, + 106, + 196, + 35, + 57, + 140, + 95, + 132, + 31, + 105, + 91, + 131, + 161, + 255, + 200, + 85, + 123, + 44, + 180, + 7, + 54, + 145, + 150, + 4, + 132, + 233, + 238, + 99, + 241, + 11, + 224, + 247, + 49, + 182, + 109, + 92, + 81, + 98, + 56, + 248, + 1, + 95, + 168, + 44, + 151, + 58, + 209, + 106, + 231, + 139, + 195, + 40, + 120, + 250, + 100, + 206, + 56, + 43, + 45, + 203, + 51, + 7, + 105, + 183, + 187, + 191, + 79, + 171, + 226, + 138, + 95, + 93, + 57, + 47, + 252, + 4, + 55, + 231, + 189, + 150, + 221, + 116, + 122, + 217, + 61, + 138, + 107, + 33, + 96, + 17, + 230, + 207, + 199, + 163, + 72, + 149, + 70, + 87, + 53, + 213, + 210, + 137, + 172, + 135, + 237, + 204, + 77, + 0, + 123, + 22, + 212, + 175, + 107, + 3, + 207, + 84, + 14, + 194, + 122, + 242, + 117, + 58, + 122, + 20, + 254, + 168, + 106, + 129, + 51, + 74, + 115, + 16, + 2, + 242, + 143, + 30, + 25, + 4, + 86, + 164, + 75, + 217, + 4, + 77, + 118, + 123, + 54, + 191, + 84, + 254, + 224, + 154, + 233, + 137, + 80, + 67, + 128, + 73, + 31, + 252, + 40, + 250, + 210, + 49, + 39, + 194, + 223, + 171, + 86, + 106, + 79, + 167, + 165, + 106, + 167, + 220, + 208, + 158, + 90, + 64, + 24, + 129, + 167, + 136, + 101, + 168, + 48, + 113, + 9, + 116, + 204, + 210, + 141, + 103, + 74, + 241, + 159, + 216, + 125, + 207, + 5, + 240, + 90, + 198, + 80, + 164, + 211, + 9, + 100, + 126, + 164, + 3, + 13, + 157, + 54, + 39, + 19, + 157, + 177, + 219, + 138, + 50, + 110, + 238, + 12, + 253, + 114, + 113, + 26, + 118, + 53, + 104, + 53, + 101, + 93, + 177, + 44, + 90, + 248, + 157, + 254, + 72, + 188, + 124, + 89, + 236, + 254, + 201, + 23, + 113, + 73, + 5, + 132, + 107, + 196, + 49, + 179, + 108, + 96, + 92, + 16, + 208, + 242, + 19, + 244, + 72, + 0, + 121, + 96, + 38, + 169, + 169, + 132, + 212, + 150, + 197, + 187, + 159, + 156, + 43, + 214, + 74, + 184, + 49, + 163, + 80, + 221, + 231, + 111, + 34, + 60, + 226, + 126, + 98, + 153, + 235, + 100, + 181, + 80, + 31, + 102, + 136, + 24, + 253, + 148, + 153, + 222, + 177, + 106, + 193, + 236, + 71, + 53, + 231, + 26, + 243, + 174, + 164, + 123, + 151, + 177, + 149, + 117, + 204, + 200, + 238, + 228, + 23, + 245, + 90, + 168, + 235, + 205, + 236, + 111, + 48, + 34, + 61, + 3, + 47, + 69, + 120, + 101, + 248, + 192, + 165, + 161, + 11, + 227, + 222, + 113, + 133, + 6, + 110, + 45, + 183, + 3, + 59, + 99, + 11, + 147, + 64, + 184, + 177, + 69, + 97, + 5, + 104, + 240, + 156, + 56, + 8, + 172, + 104, + 162, + 97, + 187, + 132, + 243, + 33, + 34, + 147, + 8, + 240, + 89, + 75, + 147, + 68, + 254, + 50, + 191, + 185, + 247, + 244, + 144, + 175, + 126, + 202, + 185, + 60, + 95, + 166, + 155, + 216, + 150, + 84, + 58, + 87, + 85, + 246, + 173, + 255, + 127, + 145, + 74, + 26, + 206, + 241, + 117, + 215, + 196, + 60, + 23, + 137, + 156, + 216, + 172, + 203, + 250, + 240, + 113, + 193, + 162, + 86, + 245, + 86, + 73, + 116, + 149, + 91, + 95, + 54, + 41, + 1, + 71, + 177, + 143, + 100, + 218, + 213, + 179, + 14, + 119, + 225, + 169, + 13, + 9, + 132, + 72, + 67, + 34, + 61, + 119, + 241, + 243, + 166, + 119, + 244, + 97, + 219, + 163, + 101, + 190, + 169, + 183, + 131, + 253, + 17, + 151, + 63, + 113, + 68, + 120, + 177, + 71, + 140, + 6, + 191, + 229, + 2, + 133, + 190, + 80, + 88, + 33, + 245, + 174, + 253, + 248, + 114, + 94, + 88, + 55, + 19, + 156, + 138, + 1, + 207, + 106, + 67, + 46, + 204, + 20, + 175, + 49, + 195, + 74, + 149, + 183, + 55, + 173, + 198, + 123, + 159, + 237, + 114, + 166, + 183, + 10, + 2, + 73, + 133, + 201, + 182, + 66, + 134, + 196, + 125, + 26, + 249, + 155, + 147, + 130, + 211, + 49, + 131, + 179, + 14, + 218, + 201, + 32, + 147, + 151, + 115, + 7, + 161, + 47, + 250, + 231, + 74, + 10, + 229, + 159, + 112, + 191, + 67, + 65, + 69, + 95, + 206, + 209, + 101, + 138, + 243, + 30, + 200, + 65, + 190, + 230, + 72, + 132, + 241, + 164, + 118, + 87, + 192, + 4, + 179, + 7, + 34, + 199, + 145, + 115, + 197, + 15, + 111, + 224, + 40, + 42, + 242, + 254, + 193, + 243, + 5, + 21, + 231, + 244, + 198, + 150, + 163, + 76, + 37, + 217, + 237, + 160, + 46, + 49, + 121, + 62, + 97, + 33, + 69, + 140, + 54, + 243, + 8, + 37, + 154, + 254, + 241, + 134, + 75, + 114, + 161, + 16, + 221, + 112, + 132, + 66, + 179, + 150, + 62, + 36, + 204, + 56, + 60, + 118, + 64, + 202, + 223, + 173, + 121, + 159, + 43, + 36, + 171, + 229, + 240, + 204, + 227, + 233, + 139, + 216, + 132, + 4, + 71, + 24, + 141, + 181, + 191, + 16, + 133, + 154, + 63, + 231, + 146, + 201, + 63, + 170, + 209, + 32, + 237, + 75, + 191, + 60, + 69, + 247, + 47, + 16, + 158, + 163, + 9, + 238, + 231, + 148, + 250, + 121, + 237, + 30, + 1, + 142, + 182, + 168, + 237, + 25, + 252, + 223, + 233, + 140, + 195, + 128, + 52, + 52, + 214, + 164, + 33, + 207, + 211, + 53, + 198, + 252, + 238, + 183, + 39, + 122, + 64, + 192, + 241, + 251, + 173, + 92, + 21, + 168, + 182, + 96, + 1, + 181, + 75, + 103, + 12, + 85, + 110, + 173, + 131, + 164, + 233, + 194, + 84, + 61, + 200, + 17, + 38, + 118, + 176, + 24, + 158, + 194, + 142, + 31, + 62, + 235, + 237, + 121, + 49, + 112, + 1, + 165, + 57, + 128, + 119, + 80, + 14, + 190, + 198, + 78, + 103, + 11, + 25, + 85, + 7, + 50, + 189, + 88, + 117, + 29, + 98, + 109, + 211, + 205, + 90, + 76, + 97, + 116, + 225, + 254, + 255, + 183, + 252, + 112, + 11, + 95, + 55, + 221, + 215, + 81, + 20, + 28, + 101, + 241, + 118, + 51, + 196, + 240, + 119, + 68, + 198, + 60, + 149, + 103, + 105, + 226, + 240, + 52, + 144, + 237, + 1, + 160, + 7, + 219, + 28, + 180, + 15, + 76, + 197, + 108, + 1, + 2, + 96, + 211, + 134, + 195, + 3, + 242, + 195, + 129, + 152, + 29, + 165, + 236, + 233, + 80, + 89, + 206, + 24, + 25, + 116, + 63, + 25, + 40, + 77, + 53, + 239, + 172, + 8, + 213, + 85, + 224, + 234, + 33, + 26, + 39, + 219, + 143, + 141, + 81, + 46, + 127, + 138, + 198, + 233, + 238, + 170, + 88, + 43, + 36, + 108, + 146, + 178, + 7, + 6, + 48, + 217, + 222, + 238, + 10, + 175, + 143, + 165, + 203, + 201, + 113, + 156, + 76, + 250, + 223, + 207, + 226, + 225, + 127, + 134, + 81, + 181, + 15, + 104, + 117, + 52, + 27, + 207, + 53, + 221, + 28, + 190, + 23, + 15, + 245, + 36, + 93, + 178, + 244, + 75, + 150, + 78, + 14, + 164, + 138, + 92, + 69, + 141, + 193, + 211, + 218, + 161, + 66, + 204, + 149, + 14, + 232, + 234, + 170, + 197, + 62, + 160, + 253, + 174, + 199, + 182, + 43, + 109, + 107, + 28, + 43, + 108, + 236, + 109, + 121, + 184, + 117, + 121, + 223, + 103, + 10, + 131, + 140, + 75, + 101, + 121, + 50, + 216, + 110, + 67, + 228, + 176, + 184, + 42, + 195, + 172, + 58, + 37, + 171, + 137, + 99, + 130, + 247, + 74, + 251, + 22, + 172, + 129, + 173, + 244, + 40, + 222, + 28, + 249, + 36, + 189, + 63, + 146, + 102, + 183, + 6, + 16, + 149, + 17, + 178, + 202, + 159, + 6, + 235, + 194, + 114, + 199, + 142, + 12, + 147, + 55, + 150, + 45, + 49, + 179, + 248, + 121, + 229, + 161, + 53, + 203, + 188, + 14, + 159, + 191, + 82, + 217, + 105, + 34, + 231, + 12, + 233, + 138, + 60, + 213, + 171, + 255, + 152, + 225, + 94, + 22, + 39, + 219, + 236, + 207, + 88, + 17, + 236, + 153, + 206, + 100, + 210, + 44, + 1, + 136, + 70, + 140, + 61, + 118, + 51, + 81, + 76, + 162, + 29, + 59, + 182, + 139, + 125, + 169, + 142, + 50, + 93, + 60, + 203, + 101, + 158, + 178, + 207, + 61, + 102, + 29, + 180, + 168, + 53, + 121, + 236, + 194, + 227, + 22, + 180, + 79, + 46, + 237, + 199, + 222, + 183, + 230, + 159, + 163, + 234, + 89, + 138, + 55, + 62, + 100, + 24, + 155, + 45, + 21, + 98, + 101, + 55, + 245, + 182, + 173, + 218, + 133, + 204, + 54, + 0, + 206, + 226, + 13, + 181, + 247, + 167, + 81, + 172, + 150, + 21, + 102, + 95, + 184, + 183, + 172, + 20, + 244, + 1, + 232, + 37, + 188, + 125, + 21, + 115, + 232, + 85, + 29, + 138, + 49, + 187, + 215, + 135, + 16, + 112, + 92, + 244, + 202, + 40, + 133, + 254, + 122, + 206, + 165, + 251, + 232, + 101, + 212, + 43, + 117, + 9, + 193, + 126, + 231, + 6, + 223, + 14, + 197, + 221, + 138, + 59, + 166, + 146, + 127, + 115, + 234, + 12, + 99, + 218, + 66, + 13, + 174, + 95, + 94, + 39, + 113, + 11, + 177, + 64, + 94, + 77, + 97, + 14, + 146, + 164, + 247, + 168, + 122, + 222, + 33, + 132, + 74, + 45, + 225, + 130, + 160, + 135, + 67, + 219, + 95, + 18, + 187, + 33, + 233, + 65, + 199, + 1, + 128, + 48, + 158, + 238, + 3, + 249, + 71, + 95, + 29, + 50, + 37, + 83, + 67, + 156, + 194, + 187, + 159, + 86, + 19, + 45, + 138, + 132, + 98, + 181, + 208, + 221, + 199, + 225, + 221, + 65, + 236, + 29, + 127, + 201, + 80, + 27, + 90, + 63, + 203, + 217, + 98, + 75, + 204, + 0, + 117, + 159, + 152, + 54, + 3, + 61, + 149, + 102, + 153, + 58, + 239, + 50, + 102, + 42, + 106, + 90, + 226, + 56, + 45, + 20, + 156, + 39, + 123, + 221, + 133, + 203, + 99, + 248, + 8, + 182, + 184, + 41, + 117, + 190, + 100, + 29, + 203, + 152, + 46, + 45, + 150, + 35, + 219, + 9, + 65, + 135, + 237, + 146, + 4, + 246, + 226, + 237, + 216, + 13, + 226, + 245, + 115, + 132, + 67, + 158, + 43, + 235, + 146, + 233, + 227, + 130, + 52, + 209, + 144, + 168, + 118, + 140, + 115, + 128, + 9, + 220, + 97, + 140, + 127, + 72, + 181, + 11, + 207, + 164, + 18, + 211, + 255, + 166, + 18, + 135, + 72, + 177, + 57, + 97, + 57, + 84, + 83, + 209, + 125, + 211, + 176, + 128, + 175, + 167, + 1, + 47, + 188, + 89, + 9, + 76, + 240, + 179, + 184, + 6, + 63, + 70, + 172, + 113, + 225, + 250, + 132, + 211, + 200, + 64, + 45, + 186, + 216, + 103, + 51, + 203, + 194, + 112, + 110, + 229, + 168, + 250, + 56, + 1, + 212, + 71, + 49, + 155, + 197, + 87, + 213, + 222, + 105, + 142, + 69, + 47, + 173, + 116, + 71, + 236, + 138, + 186, + 108, + 188, + 215, + 27, + 156, + 102, + 63, + 132, + 243, + 250, + 180, + 128, + 188, + 201, + 161, + 234, + 154, + 162, + 105, + 118, + 129, + 168, + 134, + 167, + 177, + 241, + 227, + 245, + 242, + 25, + 229, + 32, + 209, + 215, + 21, + 178, + 18, + 241, + 138, + 83, + 6, + 225, + 195, + 76, + 98, + 23, + 89, + 131, + 57, + 80, + 177, + 203, + 198, + 90, + 99, + 207, + 7, + 51, + 248, + 66, + 237, + 150, + 21, + 87, + 149, + 63, + 62, + 3, + 153, + 233, + 210, + 147, + 165, + 206, + 130, + 125, + 54, + 29, + 132, + 77, + 103, + 108, + 26, + 243, + 214, + 18, + 154, + 231, + 218, + 41, + 253, + 24, + 184, + 73, + 180, + 15, + 20, + 236, + 125, + 122, + 14, + 238, + 190, + 58, + 127, + 214, + 65, + 236, + 34, + 132, + 169, + 64, + 169, + 181, + 141, + 101, + 140, + 206, + 7, + 68, + 29, + 28, + 97, + 24, + 75, + 176, + 132, + 68, + 53, + 183, + 86, + 11, + 190, + 104, + 135, + 29, + 231, + 246, + 126, + 42, + 166, + 92, + 99, + 137, + 249, + 93, + 111, + 84, + 20, + 131, + 58, + 0, + 104, + 64, + 44, + 239, + 162, + 46, + 79, + 54, + 95, + 139, + 5, + 143, + 111, + 98, + 152, + 40, + 85, + 9, + 7, + 109, + 118, + 168, + 217, + 60, + 230, + 246, + 238, + 65, + 17, + 178, + 79, + 245, + 188, + 204, + 193, + 228, + 13, + 22, + 205, + 253, + 191, + 148, + 84, + 110, + 219, + 21, + 209, + 150, + 10, + 147, + 234, + 99, + 142, + 221, + 117, + 140, + 72, + 85, + 54, + 179, + 132, + 48, + 25, + 67, + 209, + 184, + 12, + 2, + 251, + 96, + 107, + 12, + 120, + 168, + 200, + 61, + 143, + 6, + 33, + 123, + 203, + 83, + 179, + 239, + 251, + 252, + 207, + 33, + 42, + 137, + 8, + 245, + 198, + 145, + 195, + 34, + 121, + 63, + 136, + 96, + 25, + 253, + 65, + 212, + 227, + 123, + 55, + 156, + 63, + 185, + 147, + 127, + 183, + 78, + 179, + 224, + 12, + 85, + 110, + 124, + 103, + 89, + 77, + 183, + 2, + 244, + 197, + 211, + 128, + 55, + 141, + 131, + 166, + 165, + 157, + 119, + 238, + 233, + 130, + 80, + 99, + 136, + 35, + 63, + 109, + 253, + 74, + 162, + 100, + 49, + 73, + 198, + 74, + 194, + 69, + 87, + 230, + 162, + 53, + 188, + 248, + 109, + 143, + 85, + 196, + 131, + 4, + 27, + 165, + 202, + 5, + 83, + 240, + 98, + 56, + 135, + 59, + 184, + 154, + 92, + 100, + 88, + 223, + 78, + 191, + 77, + 238, + 9, + 1, + 215, + 97, + 188, + 228, + 155, + 160, + 218, + 179, + 223, + 149, + 223, + 67, + 183, + 195, + 111, + 190, + 76, + 96, + 39, + 20, + 101, + 180, + 134, + 19, + 182, + 159, + 106, + 84, + 226, + 246, + 103, + 76, + 18, + 8, + 65, + 68, + 15, + 99, + 172, + 22, + 35, + 26, + 230, + 195, + 52, + 143, + 156, + 106, + 31, + 252, + 68, + 69, + 99, + 140, + 203, + 101, + 178, + 234, + 133, + 205, + 204, + 51, + 21, + 247, + 64, + 130, + 220, + 203, + 54, + 100, + 79, + 9, + 28, + 66, + 115, + 249, + 3, + 116, + 151, + 184, + 128, + 183, + 195, + 174, + 213, + 231, + 203, + 6, + 40, + 75, + 74, + 49, + 158, + 179, + 188, + 243, + 62, + 183, + 0, + 163, + 198, + 200, + 78, + 78, + 27, + 78, + 209, + 147, + 173, + 214, + 207, + 207, + 24, + 250, + 120, + 6, + 133, + 8, + 73, + 6, + 148, + 6, + 175, + 125, + 61, + 100, + 209, + 214, + 89, + 176, + 209, + 11, + 150, + 118, + 138, + 9, + 176, + 207, + 106, + 6, + 94, + 129, + 44, + 109, + 143, + 17, + 0, + 128, + 251, + 36, + 200, + 79, + 77, + 250, + 48, + 79, + 158, + 101, + 100, + 153, + 26, + 32, + 47, + 76, + 194, + 15, + 51, + 171, + 246, + 175, + 175, + 69, + 106, + 81, + 15, + 71, + 217, + 28, + 59, + 57, + 150, + 201, + 187, + 17, + 189, + 239, + 66, + 137, + 225, + 109, + 40, + 13, + 248, + 200, + 248, + 139, + 140, + 221, + 178, + 29, + 26, + 21, + 2, + 221, + 12, + 226, + 46, + 63, + 7, + 9, + 83, + 169, + 111, + 22, + 76, + 128, + 249, + 92, + 5, + 83, + 77, + 119, + 221, + 147, + 231, + 151, + 5, + 93, + 231, + 210, + 251, + 198, + 124, + 229, + 46, + 203, + 139, + 220, + 138, + 143, + 123, + 135, + 251, + 236, + 4, + 30, + 125, + 199, + 241, + 4, + 185, + 186, + 160, + 94, + 110, + 163, + 17, + 3, + 19, + 197, + 23, + 35, + 170, + 35, + 208, + 198, + 246, + 232, + 228, + 42, + 229, + 122, + 50, + 226, + 55, + 207, + 50, + 140, + 59, + 213, + 237, + 74, + 185, + 204, + 97, + 79, + 250, + 136, + 129, + 148, + 179, + 80, + 157, + 77, + 175, + 111, + 235, + 162, + 87, + 133, + 113, + 64, + 5, + 66, + 100, + 106, + 184, + 233, + 148, + 116, + 210, + 167, + 78, + 246, + 206, + 206, + 49, + 228, + 116, + 24, + 47, + 213, + 57, + 59, + 194, + 244, + 114, + 208, + 126, + 125, + 96, + 134, + 96, + 107, + 143, + 142, + 166, + 147, + 182, + 104, + 118, + 37, + 45, + 251, + 113, + 179, + 198, + 157, + 196, + 95, + 179, + 183, + 232, + 84, + 239, + 240, + 22, + 24, + 152, + 179, + 29, + 232, + 97, + 72, + 203, + 234, + 133, + 181, + 78, + 223, + 110, + 21, + 135, + 80, + 211, + 56, + 79, + 190, + 121, + 72, + 63, + 143, + 63, + 51, + 165, + 88, + 205, + 49, + 68, + 248, + 62, + 5, + 95, + 101, + 224, + 153, + 59, + 15, + 99, + 183, + 253, + 233, + 60, + 183, + 199, + 233, + 167, + 250, + 42, + 177, + 239, + 99, + 47, + 93, + 121, + 50, + 228, + 55, + 208, + 210, + 138, + 165, + 36, + 124, + 121, + 179, + 68, + 116, + 233, + 135, + 120, + 125, + 60, + 55, + 204, + 173, + 60, + 129, + 60, + 173, + 172, + 160, + 112, + 2, + 155, + 216, + 113, + 176, + 66, + 253, + 254, + 85, + 116, + 68, + 128, + 228, + 210, + 93, + 24, + 223, + 7, + 192, + 67, + 90, + 166, + 227, + 11, + 169, + 105, + 201, + 22, + 57, + 22, + 13, + 210, + 184, + 103, + 220, + 205, + 200, + 1, + 134, + 226, + 200, + 154, + 233, + 181, + 124, + 54, + 148, + 121, + 204, + 171, + 179, + 13, + 5, + 185, + 104, + 34, + 237, + 210, + 207, + 19, + 111, + 44, + 51, + 35, + 216, + 247, + 1, + 0, + 13, + 6, + 52, + 54, + 145, + 3, + 221, + 151, + 131, + 208, + 146, + 98, + 2, + 151, + 217, + 238, + 253, + 4, + 25, + 244, + 158, + 224, + 42, + 190, + 211, + 200, + 155, + 250, + 161, + 115, + 63, + 188, + 59, + 85, + 138, + 80, + 113, + 82, + 62, + 139, + 3, + 118, + 135, + 246, + 250, + 65, + 26, + 91, + 144, + 234, + 142, + 128, + 162, + 41, + 119, + 57, + 209, + 162, + 23, + 9, + 97, + 158, + 24, + 197, + 53, + 224, + 127, + 114, + 41, + 106, + 42, + 13, + 179, + 138, + 40, + 219, + 253, + 17, + 124, + 44, + 75, + 130, + 95, + 70, + 216, + 225, + 135, + 254, + 188, + 6, + 180, + 135, + 184, + 228, + 162, + 30, + 145, + 235, + 117, + 250, + 238, + 95, + 66, + 62, + 88, + 30, + 188, + 218, + 194, + 208, + 44, + 26, + 149, + 228, + 10, + 160, + 1, + 131, + 12, + 115, + 70, + 226, + 76, + 131, + 90, + 141, + 223, + 203, + 136, + 214, + 151, + 144, + 213, + 167, + 64, + 53, + 177, + 74, + 20, + 231, + 142, + 41, + 199, + 30, + 158, + 142, + 117, + 133, + 145, + 107, + 54, + 164, + 78, + 209, + 34, + 129, + 79, + 21, + 234, + 190, + 90, + 218, + 93, + 72, + 241, + 128, + 98, + 16, + 98, + 127, + 79, + 125, + 32, + 185, + 219, + 190, + 202, + 96, + 81, + 214, + 8, + 164, + 64, + 211, + 177, + 96, + 199, + 164, + 229, + 168, + 25, + 42, + 233, + 196, + 39, + 111, + 49, + 246, + 154, + 128, + 119, + 184, + 100, + 110, + 196, + 42, + 203, + 142, + 228, + 244, + 45, + 100, + 133, + 92, + 117, + 109, + 203, + 210, + 159, + 95, + 148, + 192, + 123, + 102, + 106, + 241, + 175, + 167, + 230, + 211, + 160, + 143, + 60, + 134, + 128, + 181, + 123, + 216, + 31, + 52, + 9, + 203, + 166, + 182, + 41, + 95, + 221, + 161, + 11, + 75, + 179, + 207, + 35, + 112, + 3, + 36, + 13, + 89, + 102, + 137, + 77, + 161, + 91, + 194, + 175, + 197, + 104, + 199, + 69, + 208, + 208, + 54, + 157, + 121, + 248, + 197, + 70, + 41, + 96, + 107, + 23, + 133, + 127, + 28, + 223, + 75, + 130, + 230, + 200, + 102, + 16, + 64, + 172, + 213, + 71, + 195, + 48, + 96, + 107, + 182, + 37, + 201, + 89, + 48, + 162, + 44, + 240, + 114, + 210, + 23, + 93, + 222, + 210, + 31, + 5, + 226, + 113, + 30, + 91, + 62, + 10, + 25, + 229, + 76, + 169, + 74, + 200, + 73, + 253, + 119, + 65, + 41, + 64, + 211, + 237, + 116, + 127, + 211, + 75, + 2, + 160, + 118, + 168, + 50, + 100, + 166, + 3, + 5, + 90, + 15, + 58, + 199, + 78, + 103, + 145, + 176, + 165, + 107, + 113, + 209, + 15, + 122, + 88, + 21, + 28, + 40, + 189, + 112, + 252, + 253, + 98, + 137, + 101, + 227, + 245, + 56, + 109, + 234, + 138, + 209, + 9, + 23, + 53, + 229, + 159, + 88, + 166, + 99, + 168, + 156, + 94, + 16, + 38, + 61, + 234, + 4, + 167, + 127, + 16, + 218, + 53, + 169, + 103, + 165, + 70, + 82, + 190, + 109, + 224, + 201, + 1, + 29, + 199, + 87, + 64, + 220, + 56, + 106, + 101, + 17, + 120, + 212, + 35, + 0, + 80, + 194, + 84, + 37, + 246, + 40, + 63, + 13, + 84, + 0, + 194, + 67, + 146, + 169, + 44, + 106, + 27, + 91, + 6, + 254, + 193, + 119, + 230, + 236, + 38, + 86, + 5, + 81, + 152, + 229, + 194, + 138, + 205, + 41, + 87, + 193, + 156, + 84, + 210, + 193, + 26, + 95, + 125, + 85, + 251, + 154, + 74, + 12, + 146, + 55, + 115, + 99, + 218, + 100, + 152, + 246, + 187, + 188, + 44, + 123, + 227, + 212, + 115, + 109, + 86, + 100, + 116, + 23, + 171, + 44, + 202, + 140, + 106, + 118, + 225, + 100, + 246, + 134, + 140, + 16, + 224, + 44, + 106, + 73, + 160, + 107, + 205, + 107, + 154, + 72, + 127, + 150, + 254, + 148, + 201, + 46, + 246, + 59, + 119, + 32, + 39, + 80, + 48, + 119, + 225, + 1, + 117, + 103, + 110, + 252, + 253, + 217, + 207, + 245, + 54, + 55, + 133, + 232, + 141, + 39, + 125, + 10, + 54, + 97, + 126, + 111, + 174, + 126, + 85, + 181, + 106, + 151, + 32, + 28, + 188, + 131, + 231, + 245, + 123, + 36, + 219, + 131, + 9, + 157, + 13, + 90, + 101, + 146, + 15, + 197, + 110, + 89, + 122, + 43, + 13, + 37, + 21, + 40, + 16, + 67, + 61, + 198, + 71, + 87, + 105, + 138, + 15, + 16, + 28, + 245, + 107, + 2, + 202, + 229, + 192, + 76, + 0, + 145, + 114, + 52, + 3, + 117, + 78, + 181, + 230, + 193, + 172, + 30, + 63, + 14, + 83, + 77, + 48, + 176, + 11, + 160, + 28, + 23, + 3, + 69, + 242, + 32, + 153, + 27, + 158, + 62, + 46, + 186, + 6, + 48, + 95, + 207, + 151, + 180, + 194, + 137, + 103, + 128, + 31, + 18, + 142, + 94, + 98, + 195, + 119, + 109, + 233, + 127, + 29, + 254, + 63, + 149, + 13, + 23, + 128, + 103, + 102, + 117, + 192, + 158, + 46, + 216, + 78, + 16, + 196, + 197, + 114, + 121, + 158, + 215, + 251, + 204, + 16, + 144, + 241, + 139, + 1, + 134, + 123, + 166, + 79, + 236, + 73, + 46, + 17, + 48, + 231, + 212, + 26, + 143, + 147, + 119, + 152, + 205, + 2, + 95, + 125, + 27, + 177, + 75, + 11, + 219, + 252, + 242, + 207, + 63, + 5, + 236, + 86, + 84, + 113, + 23, + 101, + 19, + 34, + 229, + 40, + 181, + 183, + 108, + 140, + 138, + 251, + 29, + 254, + 171, + 29, + 85, + 38, + 205, + 193, + 237, + 171, + 210, + 158, + 16, + 118, + 155, + 50, + 162, + 213, + 23, + 96, + 145, + 6, + 8, + 127, + 93, + 161, + 196, + 80, + 238, + 220, + 230, + 135, + 11, + 192, + 112, + 236, + 191, + 48, + 235, + 41, + 14, + 85, + 162, + 113, + 100, + 222, + 89, + 159, + 72, + 89, + 228, + 108, + 240, + 177, + 104, + 244, + 161, + 48, + 188, + 78, + 216, + 207, + 211, + 70, + 91, + 10, + 97, + 112, + 89, + 86, + 185, + 47, + 110, + 245, + 175, + 84, + 130, + 127, + 41, + 151, + 236, + 17, + 156, + 241, + 145, + 235, + 180, + 139, + 182, + 20, + 204, + 188, + 142, + 123, + 247, + 109, + 113, + 227, + 182, + 136, + 17, + 10, + 211, + 146, + 96, + 147, + 50, + 123, + 98, + 124, + 84, + 183, + 179, + 193, + 235, + 190, + 124, + 98, + 6, + 111, + 2, + 231, + 150, + 163, + 153, + 224, + 101, + 220, + 143, + 230, + 70, + 251, + 228, + 43, + 162, + 188, + 64, + 191, + 238, + 35, + 88, + 74, + 56, + 160, + 239, + 153, + 250, + 200, + 148, + 198, + 35, + 82, + 181, + 141, + 169, + 67, + 97, + 190, + 91, + 202, + 251, + 142, + 230, + 163, + 200, + 121, + 219, + 14, + 65, + 213, + 83, + 2, + 44, + 181, + 233, + 203, + 207, + 68, + 101, + 228, + 232, + 105, + 24, + 109, + 61, + 173, + 74, + 39, + 18, + 39, + 13, + 194, + 167, + 218, + 181, + 86, + 213, + 13, + 217, + 62, + 61, + 54, + 77, + 38, + 65, + 164, + 201, + 246, + 71, + 179, + 145, + 126, + 93, + 107, + 4, + 108, + 135, + 23, + 190, + 99, + 18, + 139, + 7, + 222, + 242, + 214, + 130, + 98, + 143, + 59, + 115, + 196, + 197, + 129, + 228, + 31, + 224, + 121, + 54, + 165, + 232, + 20, + 37, + 49, + 129, + 77, + 148, + 225, + 99, + 133, + 14, + 155, + 69, + 92, + 2, + 125, + 105, + 236, + 241, + 225, + 220, + 184, + 202, + 94, + 181, + 84, + 162, + 64, + 105, + 7, + 65, + 242, + 201, + 122, + 40, + 31, + 10, + 227, + 123, + 139, + 22, + 78, + 240, + 254, + 16, + 172, + 198, + 103, + 70, + 219, + 217, + 225, + 38, + 82, + 246, + 16, + 201, + 219, + 19, + 124, + 207, + 94, + 122, + 148, + 17, + 94, + 137, + 83, + 138, + 97, + 193, + 96, + 135, + 42, + 145, + 169, + 210, + 10, + 255, + 95, + 136, + 222, + 17, + 192, + 67, + 226, + 31, + 247, + 35, + 60, + 52, + 148, + 77, + 64, + 108, + 51, + 66, + 57, + 204, + 98, + 184, + 24, + 27, + 78, + 134, + 249, + 221, + 212, + 17, + 108, + 161, + 176, + 98, + 239, + 227, + 77, + 201, + 68, + 51, + 153, + 185, + 51, + 5, + 51, + 110, + 85, + 250, + 227, + 46, + 97, + 149, + 178, + 90, + 208, + 110, + 152, + 219, + 202, + 37, + 27, + 158, + 137, + 139, + 243, + 144, + 236, + 26, + 37, + 70, + 34, + 54, + 21, + 37, + 242, + 169, + 11, + 101, + 4, + 234, + 253, + 189, + 166, + 133, + 178, + 168, + 73, + 50, + 241, + 162, + 183, + 122, + 130, + 109, + 231, + 222, + 68, + 86, + 152, + 221, + 171, + 218, + 213, + 67, + 122, + 26, + 5, + 244, + 37, + 66, + 72, + 97, + 95, + 90, + 175, + 186, + 196, + 168, + 11, + 100, + 122, + 242, + 159, + 214, + 139, + 139, + 59, + 199, + 74, + 180, + 252, + 35, + 97, + 88, + 84, + 208, + 230, + 3, + 141, + 210, + 87, + 204, + 226, + 170, + 24, + 26, + 80, + 201, + 148, + 179, + 243, + 167, + 152, + 243, + 16, + 65, + 101, + 162, + 96, + 189, + 220, + 111, + 98, + 103, + 109, + 68, + 68, + 142, + 105, + 158, + 91, + 224, + 102, + 172, + 12, + 126, + 235, + 173, + 37, + 109, + 177, + 78, + 54, + 194, + 236, + 140, + 250, + 99, + 220, + 97, + 195, + 214, + 195, + 65, + 152, + 154, + 207, + 7, + 67, + 53, + 174, + 29, + 70, + 143, + 117, + 195, + 42, + 36, + 80, + 22, + 97, + 0, + 253, + 244, + 237, + 251, + 251, + 37, + 169, + 106, + 2, + 44, + 190, + 151, + 67, + 213, + 79, + 108, + 98, + 57, + 29, + 204, + 184, + 157, + 51, + 140, + 39, + 158, + 112, + 232, + 45, + 249, + 161, + 86, + 172, + 77, + 104, + 133, + 22, + 176, + 23, + 71, + 76, + 175, + 71, + 82, + 89, + 96, + 230, + 197, + 96, + 121, + 91, + 84, + 16, + 111, + 150, + 19, + 95, + 222, + 60, + 100, + 159, + 7, + 74, + 118, + 40, + 25, + 116, + 111, + 112, + 176, + 96, + 46, + 209, + 235, + 14, + 183, + 115, + 2, + 29, + 39, + 108, + 200, + 178, + 72, + 231, + 135, + 159, + 15, + 151, + 152, + 148, + 129, + 138, + 119, + 173, + 60, + 137, + 6, + 162, + 8, + 144, + 187, + 49, + 248, + 235, + 118, + 162, + 255, + 145, + 98, + 101, + 161, + 8, + 251, + 73, + 233, + 172, + 151, + 228, + 72, + 7, + 138, + 70, + 84, + 13, + 204, + 144, + 10, + 32, + 221, + 220, + 34, + 204, + 95, + 60, + 45, + 182, + 152, + 27, + 89, + 15, + 204, + 192, + 159, + 124, + 64, + 190, + 183, + 151, + 156, + 13, + 23, + 149, + 242, + 113, + 184, + 66, + 191, + 88, + 104, + 7, + 168, + 135, + 239, + 203, + 108, + 74, + 165, + 42, + 179, + 230, + 152, + 191, + 140, + 46, + 88, + 162, + 36, + 131, + 207, + 23, + 240, + 227, + 152, + 31, + 123, + 27, + 235, + 68, + 28, + 19, + 212, + 172, + 163, + 180, + 93, + 80, + 25, + 91, + 214, + 33, + 105, + 255, + 242, + 148, + 186, + 46, + 220, + 160, + 250, + 79, + 43, + 120, + 2, + 128, + 231, + 152, + 38, + 254, + 99, + 32, + 59, + 114, + 174, + 54, + 58, + 202, + 207, + 130, + 29, + 190, + 16, + 24, + 215, + 16, + 129, + 128, + 236, + 90, + 3, + 42, + 142, + 127, + 71, + 22, + 36, + 122, + 135, + 193, + 113, + 78, + 58, + 31, + 135, + 49, + 162, + 82, + 107, + 213, + 174, + 227, + 88, + 149, + 86, + 55, + 240, + 248, + 255, + 203, + 124, + 248, + 227, + 16, + 32, + 227, + 38, + 41, + 30, + 6, + 252, + 43, + 126, + 156, + 169, + 121, + 181, + 117, + 247, + 45, + 106, + 128, + 98, + 99, + 6, + 122, + 7, + 55, + 254, + 97, + 191, + 18, + 158, + 235, + 2, + 36, + 145, + 218, + 17, + 150, + 10, + 138, + 129, + 38, + 59, + 226, + 224, + 128, + 241, + 111, + 209, + 92, + 18, + 244, + 247, + 214, + 198, + 203, + 237, + 142, + 54, + 112, + 136, + 0, + 232, + 81, + 216, + 236, + 119, + 163, + 164, + 205, + 76, + 92, + 240, + 176, + 176, + 139, + 193, + 226, + 210, + 47, + 253, + 160, + 94, + 170, + 35, + 3, + 219, + 239, + 61, + 121, + 182, + 46, + 238, + 213, + 237, + 112, + 53, + 83, + 121, + 111, + 108, + 68, + 212, + 177, + 56, + 229, + 19, + 173, + 57, + 47, + 247, + 205, + 138, + 134, + 178, + 3, + 16, + 235, + 173, + 142, + 209, + 175, + 98, + 19, + 121, + 81, + 253, + 177, + 35, + 20, + 50, + 90, + 188, + 49, + 216, + 41, + 216, + 227, + 222, + 115, + 5, + 45, + 127, + 151, + 209, + 200, + 110, + 242, + 177, + 243, + 43, + 32, + 72, + 85, + 71, + 7, + 135, + 34, + 166, + 138, + 182, + 152, + 112, + 29, + 220, + 118, + 229, + 53, + 19, + 232, + 175, + 166, + 135, + 236, + 230, + 200, + 144, + 11, + 121, + 26, + 122, + 145, + 111, + 114, + 114, + 200, + 91, + 34, + 132, + 152, + 248, + 46, + 238, + 16, + 236, + 149, + 2, + 175, + 225, + 201, + 201, + 151, + 185, + 183, + 175, + 225, + 44, + 149, + 245, + 245, + 102, + 187, + 3, + 132, + 100, + 142, + 116, + 186, + 33, + 17, + 8, + 36, + 85, + 70, + 249, + 182, + 118, + 92, + 232, + 208, + 126, + 137, + 189, + 195, + 253, + 234, + 150, + 106, + 38, + 20, + 246, + 154, + 207, + 213, + 102, + 94, + 88, + 21, + 94, + 168, + 221, + 44, + 76, + 128, + 109, + 215, + 125, + 132, + 1, + 93, + 101, + 216, + 152, + 141, + 27, + 225, + 119, + 11, + 140, + 130, + 10, + 49, + 160, + 198, + 78, + 244, + 37, + 21, + 21, + 204, + 117, + 234, + 36, + 63, + 222, + 153, + 239, + 177, + 167, + 145, + 139, + 69, + 73, + 57, + 181, + 49, + 252, + 137, + 251, + 189, + 254, + 193, + 39, + 148, + 187, + 65, + 245, + 1, + 192, + 135, + 249, + 109, + 102, + 212, + 84, + 155, + 99, + 54, + 117, + 18, + 198, + 186, + 223, + 252, + 196, + 76, + 0, + 139, + 54, + 144, + 82, + 64, + 21, + 79, + 193, + 249, + 151, + 84, + 141, + 0, + 30, + 236, + 33, + 128, + 52, + 145, + 157, + 250, + 248, + 229, + 237, + 70, + 156, + 33, + 153, + 206, + 103, + 106, + 135, + 250, + 224, + 7, + 117, + 150, + 211, + 255, + 184, + 79, + 152, + 188, + 113, + 131, + 198, + 76, + 211, + 238, + 179, + 191, + 163, + 207, + 153, + 41, + 208, + 60, + 142, + 161, + 37, + 226, + 142, + 95, + 78, + 5, + 109, + 75, + 47, + 191, + 237, + 20, + 137, + 10, + 45, + 158, + 68, + 49, + 112, + 152, + 219, + 86, + 40, + 45, + 200, + 240, + 82, + 32, + 205, + 49, + 102, + 229, + 0, + 49, + 144, + 227, + 227, + 135, + 131, + 47, + 186, + 51, + 71, + 63, + 231, + 35, + 196, + 101, + 198, + 76, + 40, + 70, + 165, + 220, + 91, + 220, + 239, + 251, + 2, + 42, + 58, + 164, + 3, + 19, + 170, + 66, + 150, + 234, + 102, + 250, + 134, + 89, + 28, + 206, + 121, + 65, + 29, + 201, + 121, + 127, + 158, + 66, + 244, + 49, + 144, + 210, + 206, + 105, + 212, + 84, + 26, + 56, + 145, + 131, + 107, + 234, + 230, + 183, + 215, + 154, + 113, + 202, + 254, + 158, + 187, + 23, + 137, + 163, + 141, + 103, + 84, + 86, + 120, + 206, + 134, + 138, + 216, + 149, + 114, + 14, + 234, + 148, + 49, + 105, + 238, + 13, + 99, + 29, + 217, + 242, + 97, + 96, + 141, + 181, + 46, + 209, + 9, + 122, + 74, + 242, + 79, + 46, + 131, + 154, + 98, + 106, + 71, + 143, + 218, + 244, + 179, + 44, + 189, + 102, + 175, + 116, + 106, + 36, + 225, + 81, + 203, + 169, + 224, + 16, + 233, + 131, + 145, + 9, + 159, + 136, + 17, + 248, + 197, + 255, + 77, + 33, + 16, + 2, + 237, + 64, + 71, + 111, + 42, + 147, + 5, + 67, + 66, + 84, + 129, + 232, + 242, + 20, + 69, + 1, + 248, + 177, + 70, + 56, + 182, + 62, + 60, + 63, + 11, + 28, + 194, + 242, + 154, + 131, + 121, + 153, + 11, + 175, + 37, + 134, + 141, + 177, + 87, + 213, + 31, + 141, + 37, + 65, + 19, + 182, + 151, + 51, + 187, + 250, + 64, + 53, + 232, + 26, + 144, + 219, + 38, + 0, + 213, + 109, + 246, + 237, + 244, + 26, + 40, + 143, + 34, + 88, + 1, + 173, + 108, + 144, + 21, + 161, + 7, + 184, + 35, + 199, + 6, + 138, + 4, + 187, + 196, + 177, + 114, + 213, + 11, + 244, + 162, + 173, + 97, + 245, + 121, + 224, + 92, + 163, + 81, + 199, + 7, + 223, + 151, + 128, + 16, + 204, + 187, + 226, + 212, + 133, + 118, + 9, + 50, + 165, + 93, + 148, + 232, + 255, + 207, + 68, + 161, + 109, + 196, + 160, + 62, + 182, + 128, + 116, + 48, + 190, + 135, + 37, + 214, + 37, + 75, + 200, + 127, + 154, + 197, + 157, + 56, + 49, + 160, + 2, + 64, + 11, + 23, + 116, + 118, + 246, + 176, + 236, + 227, + 210, + 83, + 107, + 24, + 237, + 193, + 212, + 28, + 107, + 75, + 114, + 80, + 215, + 32, + 150, + 34, + 227, + 87, + 169, + 122, + 234, + 109, + 237, + 122, + 98, + 171, + 2, + 42, + 209, + 197, + 102, + 149, + 173, + 193, + 154, + 206, + 115, + 14, + 106, + 141, + 44, + 7, + 217, + 162, + 49, + 4, + 179, + 40, + 233, + 152, + 254, + 124, + 11, + 215, + 246, + 30, + 244, + 218, + 102, + 53, + 172, + 54, + 45, + 101, + 51, + 69, + 158, + 212, + 188, + 3, + 77, + 224, + 228, + 106, + 56, + 255, + 249, + 31, + 231, + 180, + 140, + 120, + 117, + 15, + 164, + 153, + 123, + 245, + 88, + 28, + 198, + 96, + 191, + 48, + 134, + 149, + 115, + 97, + 231, + 101, + 77, + 216, + 172, + 2, + 176, + 124, + 68, + 173, + 199, + 92, + 243, + 198, + 180, + 103, + 188, + 8, + 23, + 230, + 10, + 231, + 247, + 23, + 208, + 233, + 0, + 51, + 129, + 200, + 47, + 151, + 91, + 223, + 155, + 66, + 45, + 143, + 122, + 183, + 101, + 181, + 239, + 220, + 114, + 54, + 126, + 186, + 155, + 104, + 113, + 57, + 165, + 36, + 150, + 244, + 226, + 63, + 145, + 59, + 182, + 154, + 14, + 44, + 18, + 50, + 61, + 136, + 197, + 180, + 121, + 79, + 39, + 220, + 110, + 80, + 121, + 2, + 172, + 196, + 247, + 72, + 119, + 120, + 193, + 25, + 245, + 66, + 49, + 91, + 74, + 185, + 91, + 120, + 135, + 207, + 201, + 36, + 21, + 14, + 127, + 66, + 225, + 154, + 164, + 41, + 115, + 219, + 81, + 149, + 28, + 91, + 103, + 173, + 117, + 193, + 167, + 119, + 59, + 193, + 27, + 104, + 173, + 17, + 158, + 238, + 114, + 166, + 221, + 111, + 207, + 32, + 182, + 112, + 243, + 73, + 6, + 42, + 236, + 173, + 166, + 188, + 143, + 194, + 184, + 151, + 97, + 53, + 144, + 17, + 142, + 28, + 171, + 161, + 1, + 179, + 172, + 205, + 164, + 97, + 140, + 226, + 148, + 184, + 8, + 79, + 202, + 210, + 34, + 147, + 138, + 84, + 3, + 216, + 86, + 71, + 31, + 145, + 44, + 94, + 240, + 63, + 144, + 213, + 34, + 217, + 253, + 107, + 177, + 99, + 143, + 226, + 168, + 84, + 178, + 221, + 162, + 195, + 132, + 171, + 67, + 95, + 181, + 192, + 145, + 51, + 228, + 162, + 142, + 98, + 249, + 176, + 246, + 117, + 89, + 92, + 66, + 238, + 196, + 22, + 74, + 27, + 153, + 101, + 60, + 217, + 52, + 219, + 172, + 71, + 34, + 32, + 221, + 183, + 209, + 171, + 147, + 223, + 214, + 164, + 215, + 28, + 220, + 68, + 3, + 14, + 171, + 162, + 89, + 10, + 3, + 143, + 9, + 18, + 4, + 171, + 187, + 147, + 112, + 26, + 86, + 212, + 217, + 107, + 207, + 229, + 162, + 56, + 245, + 62, + 153, + 246, + 181, + 223, + 64, + 100, + 85, + 8, + 225, + 28, + 176, + 176, + 71, + 149, + 225, + 91, + 199, + 140, + 113, + 33, + 217, + 234, + 68, + 38, + 61, + 152, + 73, + 189, + 162, + 5, + 81, + 178, + 74, + 125, + 63, + 205, + 38, + 232, + 215, + 184, + 164, + 172, + 77, + 120, + 217, + 2, + 105, + 176, + 60, + 37, + 214, + 46, + 191, + 147, + 51, + 198, + 175, + 185, + 142, + 146, + 28, + 146, + 80, + 44, + 17, + 70, + 29, + 162, + 152, + 50, + 173, + 153, + 86, + 8, + 84, + 169, + 192, + 70, + 216, + 103, + 50, + 218, + 254, + 204, + 33, + 11, + 29, + 51, + 171, + 14, + 197, + 115, + 5, + 224, + 231, + 108, + 47, + 77, + 4, + 4, + 77, + 235, + 22, + 5, + 227, + 239, + 184, + 150, + 127, + 157, + 228, + 173, + 254, + 6, + 59, + 239, + 211, + 218, + 62, + 233, + 80, + 72, + 144, + 166, + 172, + 142, + 64, + 100, + 147, + 124, + 143, + 85, + 236, + 126, + 77, + 137, + 203, + 76, + 25, + 180, + 116, + 152, + 63, + 199, + 243, + 32, + 241, + 17, + 68, + 253, + 214, + 227, + 253, + 150, + 133, + 170, + 28, + 90, + 83, + 106, + 18, + 40, + 241, + 142, + 4, + 125, + 189, + 209, + 201, + 174, + 154, + 171, + 36, + 157, + 48, + 56, + 60, + 119, + 3, + 215, + 99, + 201, + 174, + 184, + 214, + 233, + 224, + 104, + 116, + 1, + 68, + 47, + 29, + 197, + 210, + 223, + 144, + 20, + 153, + 152, + 246, + 63, + 133, + 168, + 99, + 251, + 207, + 148, + 74, + 38, + 136, + 62, + 97, + 78, + 129, + 246, + 215, + 147, + 221, + 52, + 79, + 60, + 97, + 167, + 29, + 130, + 136, + 75, + 150, + 99, + 165, + 197, + 78, + 228, + 194, + 207, + 127, + 84, + 180, + 156, + 139, + 16, + 82, + 58, + 227, + 200, + 32, + 85, + 135, + 40, + 156, + 243, + 164, + 196, + 163, + 9, + 169, + 198, + 171, + 181, + 187, + 194, + 113, + 85, + 137, + 187, + 38, + 97, + 89, + 35, + 40, + 216, + 53, + 45, + 23, + 38, + 93, + 6, + 66, + 43, + 202, + 254, + 17, + 197, + 172, + 192, + 102, + 239, + 240, + 212, + 86, + 231, + 111, + 62, + 203, + 35, + 34, + 16, + 33, + 92, + 111, + 212, + 126, + 107, + 214, + 111, + 178, + 98, + 13, + 200, + 195, + 135, + 205, + 55, + 216, + 230, + 214, + 186, + 74, + 130, + 182, + 68, + 87, + 184, + 253, + 84, + 39, + 88, + 223, + 184, + 94, + 169, + 142, + 8, + 212, + 201, + 224, + 44, + 89, + 86, + 163, + 238, + 208, + 82, + 180, + 146, + 221, + 39, + 140, + 18, + 208, + 8, + 179, + 46, + 188, + 216, + 70, + 90, + 130, + 137, + 105, + 201, + 38, + 82, + 75, + 229, + 107, + 18, + 0, + 131, + 33, + 83, + 111, + 38, + 202, + 150, + 38, + 75, + 157, + 55, + 78, + 35, + 1, + 87, + 139, + 170, + 140, + 129, + 209, + 17, + 169, + 75, + 127, + 53, + 97, + 188, + 83, + 160, + 26, + 121, + 84, + 53, + 137, + 199, + 55, + 12, + 171, + 139, + 209, + 160, + 255, + 40, + 61, + 144, + 55, + 192, + 67, + 167, + 13, + 168, + 166, + 168, + 148, + 247, + 10, + 113, + 118, + 235, + 133, + 12, + 166, + 47, + 8, + 212, + 93, + 109, + 93, + 43, + 67, + 6, + 155, + 170, + 34, + 55, + 36, + 21, + 125, + 91, + 245, + 158, + 74, + 226, + 224, + 247, + 42, + 227, + 14, + 126, + 221, + 161, + 111, + 31, + 118, + 221, + 115, + 64, + 61, + 53, + 155, + 86, + 79, + 218, + 40, + 58, + 232, + 181, + 186, + 113, + 230, + 133, + 90, + 35, + 3, + 250, + 40, + 102, + 76, + 207, + 136, + 141, + 198, + 135, + 229, + 185, + 31, + 180, + 109, + 32, + 151, + 216, + 244, + 195, + 186, + 223, + 207, + 124, + 62, + 204, + 84, + 170, + 138, + 87, + 110, + 179, + 130, + 155, + 5, + 138, + 235, + 42, + 41, + 243, + 150, + 6, + 132, + 67, + 134, + 206, + 253, + 223, + 5, + 131, + 42, + 37, + 23, + 209, + 216, + 197, + 42, + 4, + 138, + 174, + 133, + 162, + 115, + 35, + 249, + 101, + 65, + 173, + 202, + 3, + 51, + 170, + 206, + 246, + 80, + 17, + 234, + 141, + 139, + 119, + 53, + 194, + 56, + 158, + 254, + 224, + 124, + 165, + 83, + 173, + 138, + 14, + 13, + 205, + 203, + 28, + 63, + 209, + 198, + 178, + 234, + 221, + 127, + 3, + 33, + 255, + 57, + 6, + 240, + 84, + 225, + 253, + 156, + 202, + 169, + 216, + 245, + 167, + 9, + 60, + 139, + 177, + 196, + 66, + 92, + 214, + 151, + 181, + 153, + 218, + 160, + 249, + 82, + 69, + 113, + 80, + 32, + 231, + 222, + 252, + 123, + 20, + 185, + 188, + 0, + 57, + 251, + 107, + 40, + 207, + 71, + 23, + 33, + 139, + 190, + 128, + 159, + 3, + 37, + 85, + 222, + 87, + 28, + 66, + 244, + 221, + 25, + 26, + 140, + 25, + 27, + 143, + 109, + 231, + 241, + 224, + 158, + 125, + 36, + 50, + 59, + 88, + 229, + 183, + 173, + 190, + 30, + 116, + 211, + 161, + 92, + 18, + 149, + 55, + 225, + 97, + 119, + 239, + 64, + 39, + 71, + 240, + 238, + 19, + 178, + 68, + 242, + 33, + 19, + 112, + 213, + 77, + 51, + 140, + 70, + 228, + 78, + 119, + 135, + 136, + 182, + 43, + 103, + 195, + 100, + 45, + 229, + 17, + 103, + 164, + 110, + 11, + 134, + 225, + 127, + 201, + 83, + 84, + 130, + 46, + 34, + 103, + 116, + 30, + 64, + 213, + 9, + 201, + 125, + 114, + 68, + 19, + 184, + 170, + 156, + 114, + 121, + 45, + 93, + 138, + 156, + 15, + 84, + 169, + 239, + 60, + 21, + 247, + 16, + 96, + 125, + 208, + 168, + 149, + 32, + 251, + 231, + 241, + 186, + 64, + 203, + 191, + 233, + 253, + 21, + 93, + 179, + 113, + 29, + 99, + 29, + 21, + 248, + 62, + 15, + 166, + 151, + 136, + 89, + 61, + 116, + 53, + 40, + 17, + 202, + 39, + 137, + 37, + 70, + 201, + 224, + 141, + 201, + 29, + 148, + 222, + 41, + 106, + 19, + 73, + 154, + 116, + 161, + 90, + 205, + 149, + 84, + 250, + 127, + 203, + 213, + 168, + 82, + 110, + 17, + 175, + 32, + 6, + 137, + 66, + 230, + 212, + 21, + 112, + 79, + 100, + 56, + 231, + 137, + 9, + 142, + 84, + 129, + 71, + 9, + 78, + 58, + 204, + 220, + 143, + 27, + 220, + 147, + 43, + 103, + 185, + 88, + 60, + 52, + 127, + 227, + 168, + 244, + 142, + 0, + 224, + 192, + 102, + 96, + 186, + 230, + 121, + 68, + 68, + 38, + 53, + 53, + 227, + 229, + 205, + 161, + 88, + 230, + 115, + 34, + 131, + 156, + 51, + 153, + 61, + 228, + 232, + 150, + 31, + 8, + 133, + 250, + 46, + 156, + 203, + 100, + 47, + 57, + 254, + 101, + 150, + 221, + 33, + 95, + 148, + 100, + 136, + 156, + 241, + 179, + 180, + 166, + 253, + 143, + 102, + 170, + 74, + 61, + 22, + 192, + 231, + 12, + 54, + 186, + 222, + 56, + 230, + 161, + 77, + 141, + 51, + 71, + 156, + 220, + 177, + 241, + 137, + 248, + 135, + 122, + 65, + 187, + 51, + 145, + 172, + 80, + 189, + 164, + 120, + 180, + 208, + 132, + 105, + 81, + 32, + 45, + 78, + 172, + 236, + 198, + 170, + 236, + 2, + 125, + 69, + 29, + 115, + 142, + 152, + 64, + 108, + 251, + 165, + 84, + 128, + 18, + 129, + 110, + 149, + 205, + 102, + 124, + 37, + 232, + 29, + 225, + 169, + 134, + 82, + 82, + 242, + 78, + 214, + 23, + 31, + 13, + 73, + 14, + 32, + 95, + 28, + 253, + 76, + 155, + 138, + 31, + 96, + 5, + 236, + 41, + 111, + 183, + 187, + 212, + 246, + 106, + 158, + 24, + 247, + 116, + 47, + 122, + 197, + 213, + 40, + 200, + 101, + 184, + 144, + 134, + 108, + 11, + 182, + 103, + 168, + 59, + 95, + 248, + 158, + 34, + 28, + 48, + 172, + 92, + 83, + 250, + 230, + 85, + 9, + 255, + 159, + 119, + 46, + 233, + 201, + 41, + 200, + 216, + 253, + 113, + 183, + 19, + 218, + 52, + 201, + 98, + 189, + 84, + 64, + 109, + 118, + 151, + 42, + 153, + 199, + 212, + 37, + 225, + 29, + 22, + 224, + 64, + 69, + 226, + 42, + 15, + 140, + 93, + 181, + 124, + 7, + 230, + 114, + 211, + 103, + 82, + 130, + 161, + 220, + 126, + 88, + 213, + 108, + 226, + 9, + 34, + 103, + 162, + 97, + 155, + 221, + 30, + 177, + 249, + 234, + 240, + 38, + 210, + 9, + 141, + 20, + 239, + 95, + 205, + 128, + 170, + 137, + 255, + 211, + 92, + 166, + 50, + 181, + 199, + 210, + 228, + 42, + 60, + 224, + 47, + 114, + 189, + 38, + 212, + 162, + 33, + 80, + 229, + 164, + 1, + 217, + 154, + 228, + 181, + 240, + 10, + 240, + 104, + 192, + 7, + 164, + 224, + 222, + 177, + 130, + 178, + 210, + 23, + 85, + 184, + 113, + 124, + 33, + 88, + 246, + 92, + 15, + 76, + 163, + 140, + 136, + 56, + 247, + 61, + 80, + 137, + 161, + 211, + 41, + 197, + 182, + 231, + 130, + 138, + 193, + 64, + 225, + 249, + 32, + 240, + 167, + 153, + 68, + 251, + 96, + 190, + 105, + 139, + 123, + 14, + 109, + 27, + 11, + 194, + 84, + 156, + 132, + 34, + 136, + 234, + 242, + 245, + 194, + 111, + 198, + 182, + 72, + 252, + 140, + 214, + 241, + 27, + 206, + 104, + 27, + 211, + 171, + 125, + 151, + 189, + 235, + 190, + 68, + 0, + 58, + 2, + 75, + 53, + 69, + 169, + 99, + 101, + 246, + 156, + 228, + 101, + 22, + 152, + 11, + 130, + 3, + 213, + 96, + 49, + 149, + 234, + 245, + 169, + 34, + 151, + 20, + 201, + 78, + 215, + 106, + 200, + 115, + 205, + 71, + 96, + 97, + 16, + 115, + 11, + 126, + 236, + 93, + 160, + 147, + 194, + 85, + 236, + 137, + 175, + 162, + 113, + 145, + 24, + 98, + 221, + 162, + 176, + 169, + 105, + 119, + 208, + 200, + 98, + 122, + 164, + 7, + 212, + 129, + 229, + 168, + 251, + 118, + 202, + 237, + 184, + 99, + 199, + 59, + 110, + 51, + 176, + 17, + 94, + 125, + 196, + 71, + 222, + 237, + 14, + 248, + 104, + 146, + 131, + 252, + 5, + 248, + 176, + 46, + 116, + 73, + 239, + 208, + 61, + 46, + 201, + 243, + 157, + 123, + 151, + 100, + 177, + 164, + 203, + 120, + 67, + 24, + 188, + 124, + 204, + 3, + 254, + 144, + 147, + 93, + 77, + 222, + 160, + 229, + 121, + 71, + 180, + 164, + 195, + 54, + 119, + 149, + 139, + 98, + 31, + 108, + 122, + 217, + 130, + 138, + 137, + 176, + 225, + 180, + 113, + 25, + 140, + 230, + 168, + 210, + 90, + 74, + 102, + 9, + 209, + 197, + 89, + 34, + 52, + 135, + 60, + 137, + 234, + 22, + 220, + 146, + 90, + 225, + 11, + 65, + 94, + 198, + 139, + 158, + 1, + 144, + 33, + 61, + 89, + 75, + 225, + 211, + 151, + 104, + 71, + 163, + 101, + 118, + 57, + 123, + 176, + 227, + 12, + 153, + 175, + 15, + 198, + 136, + 128, + 252, + 215, + 93, + 176, + 137, + 131, + 147, + 244, + 75, + 127, + 143, + 107, + 156, + 201, + 144, + 26, + 8, + 42, + 105, + 29, + 215, + 184, + 243, + 242, + 132, + 0, + 177, + 147, + 195, + 108, + 40, + 88, + 127, + 108, + 223, + 199, + 59, + 55, + 162, + 201, + 214, + 142, + 233, + 142, + 230, + 7, + 253, + 235, + 43, + 104, + 35, + 83, + 27, + 110, + 196, + 18, + 47, + 233, + 209, + 132, + 89, + 107, + 218, + 186, + 59, + 0, + 75, + 189, + 38, + 156, + 123, + 70, + 69, + 21, + 159, + 198, + 48, + 160, + 168, + 60, + 183, + 250, + 124, + 172, + 221, + 244, + 143, + 242, + 159, + 239, + 254, + 243, + 102, + 27, + 179, + 243, + 38, + 192, + 60, + 34, + 177, + 106, + 104, + 134, + 99, + 143, + 159, + 160, + 31, + 101, + 162, + 57, + 128, + 59, + 229, + 210, + 122, + 91, + 117, + 15, + 130, + 7, + 121, + 233, + 144, + 115, + 249, + 167, + 75, + 254, + 143, + 62, + 168, + 111, + 136, + 233, + 73, + 73, + 90, + 183, + 235, + 197, + 20, + 224, + 0, + 96, + 93, + 199, + 164, + 91, + 96, + 88, + 137, + 123, + 65, + 174, + 206, + 167, + 13, + 168, + 60, + 186, + 112, + 125, + 137, + 107, + 120, + 218, + 60, + 96, + 102, + 69, + 184, + 64, + 225, + 196, + 53, + 76, + 68, + 223, + 230, + 137, + 209, + 109, + 63, + 80, + 139, + 247, + 15, + 60, + 43, + 172, + 240, + 165, + 242, + 240, + 141, + 155, + 169, + 185, + 131, + 13, + 73, + 22, + 120, + 152, + 236, + 124, + 195, + 56, + 122, + 110, + 56, + 253, + 180, + 160, + 178, + 218, + 138, + 95, + 50, + 150, + 42, + 114, + 158, + 40, + 80, + 55, + 154, + 77, + 41, + 47, + 122, + 88, + 40, + 170, + 100, + 11, + 178, + 232, + 140, + 211, + 176, + 88, + 253, + 146, + 68, + 54, + 187, + 26, + 148, + 156, + 138, + 29, + 254, + 35, + 119, + 44, + 249, + 69, + 122, + 233, + 165, + 232, + 181, + 29, + 123, + 96, + 128, + 115, + 194, + 64, + 130, + 145, + 116, + 120, + 183, + 89, + 233, + 34, + 219, + 93, + 210, + 222, + 101, + 113, + 62, + 241, + 155, + 153, + 86, + 50, + 208, + 246, + 186, + 32, + 217, + 200, + 107, + 163, + 42, + 138, + 117, + 173, + 196, + 187, + 243, + 183, + 133, + 133, + 164, + 195, + 65, + 31, + 13, + 36, + 213, + 93, + 14, + 182, + 98, + 107, + 34, + 155, + 204, + 229, + 37, + 242, + 120, + 154, + 8, + 30, + 126, + 176, + 186, + 10, + 69, + 197, + 217, + 6, + 6, + 242, + 11, + 92, + 46, + 2, + 182, + 94, + 233, + 211, + 4, + 89, + 155, + 6, + 159, + 248, + 123, + 215, + 113, + 123, + 5, + 108, + 238, + 44, + 28, + 198, + 28, + 81, + 253, + 86, + 13, + 94, + 39, + 66, + 23, + 131, + 126, + 202, + 167, + 90, + 72, + 59, + 225, + 184, + 201, + 11, + 2, + 32, + 71, + 86, + 236, + 157, + 154, + 218, + 21, + 186, + 60, + 138, + 226, + 169, + 128, + 6, + 79, + 213, + 136, + 115, + 44, + 77, + 36, + 98, + 59, + 184, + 172, + 88, + 19, + 6, + 66, + 144, + 160, + 103, + 5, + 23, + 216, + 209, + 64, + 252, + 90, + 45, + 37, + 8, + 222, + 234, + 84, + 150, + 54, + 26, + 18, + 238, + 198, + 88, + 120, + 87, + 21, + 113, + 173, + 26, + 158, + 126, + 252, + 54, + 194, + 205, + 54, + 108, + 22, + 132, + 241, + 5, + 88, + 188, + 206, + 69, + 78, + 45, + 206, + 201, + 213, + 67, + 61, + 112, + 69, + 189, + 23, + 212, + 10, + 132, + 36, + 71, + 160, + 118, + 23, + 118, + 236, + 155, + 136, + 74, + 62, + 243, + 145, + 75, + 84, + 119, + 46, + 184, + 25, + 210, + 226, + 245, + 207, + 125, + 91, + 34, + 206, + 64, + 168, + 47, + 126, + 31, + 89, + 20, + 107, + 97, + 221, + 39, + 105, + 163, + 47, + 100, + 103, + 23, + 49, + 155, + 22, + 229, + 209, + 51, + 36, + 215, + 5, + 250, + 246, + 191, + 75, + 177, + 89, + 18, + 127, + 60, + 167, + 159, + 1, + 135, + 200, + 203, + 52, + 159, + 224, + 165, + 138, + 127, + 63, + 170, + 36, + 107, + 215, + 64, + 35, + 60, + 217, + 56, + 132, + 9, + 140, + 108, + 228, + 23, + 146, + 230, + 160, + 83, + 130, + 18, + 155, + 205, + 231, + 117, + 224, + 179, + 173, + 247, + 15, + 4, + 255, + 225, + 148, + 98, + 214, + 76, + 233, + 171, + 189, + 106, + 124, + 113, + 81, + 30, + 190, + 100, + 39, + 19, + 251, + 253, + 128, + 202, + 15, + 237, + 205, + 50, + 191, + 6, + 197, + 108, + 164, + 119, + 202, + 47, + 119, + 5, + 8, + 81, + 46, + 157, + 71, + 62, + 30, + 192, + 142, + 167, + 119, + 127, + 58, + 175, + 181, + 85, + 176, + 12, + 9, + 169, + 122, + 37, + 190, + 88, + 230, + 98, + 12, + 237, + 163, + 15, + 243, + 108, + 229, + 12, + 7, + 36, + 26, + 35, + 233, + 95, + 24, + 239, + 4, + 159, + 239, + 141, + 87, + 142, + 191, + 234, + 19, + 147, + 244, + 250, + 175, + 25, + 126, + 127, + 116, + 197, + 65, + 233, + 176, + 155, + 38, + 129, + 167, + 53, + 217, + 128, + 90, + 4, + 229, + 168, + 92, + 120, + 70, + 220, + 85, + 150, + 42, + 32, + 31, + 144, + 250, + 94, + 30, + 30, + 169, + 27, + 141, + 77, + 83, + 111, + 229, + 8, + 42, + 205, + 72, + 205, + 187, + 34, + 21, + 93, + 114, + 205, + 146, + 43, + 123, + 26, + 104, + 214, + 31, + 127, + 103, + 149, + 158, + 181, + 184, + 50, + 190, + 175, + 132, + 7, + 180, + 8, + 42, + 185, + 30, + 188, + 212, + 90, + 210, + 126, + 252, + 129, + 23, + 45, + 144, + 123, + 83, + 188, + 162, + 10, + 49, + 161, + 166, + 37, + 67, + 165, + 226, + 31, + 89, + 0, + 229, + 223, + 253, + 118, + 19, + 99, + 46, + 164, + 131, + 72, + 26, + 147, + 70, + 59, + 129, + 219, + 216, + 178, + 158, + 26, + 74, + 110, + 230, + 184, + 224, + 13, + 177, + 187, + 35, + 132, + 34, + 160, + 241, + 182, + 217, + 75, + 163, + 41, + 87, + 241, + 63, + 232, + 30, + 206, + 235, + 18, + 223, + 234, + 181, + 154, + 116, + 135, + 172, + 68, + 10, + 130, + 124, + 9, + 91, + 215, + 137, + 241, + 10, + 237, + 18, + 245, + 158, + 186, + 200, + 183, + 231, + 221, + 228, + 177, + 133, + 191, + 70, + 182, + 254, + 35, + 23, + 49, + 81, + 218, + 14, + 185, + 188, + 243, + 170, + 101, + 108, + 127, + 19, + 46, + 163, + 15, + 190, + 139, + 163, + 142, + 246, + 193, + 225, + 127, + 140, + 156, + 153, + 61, + 162, + 193, + 40, + 60, + 134, + 182, + 17, + 233, + 241, + 88, + 112, + 167, + 240, + 75, + 23, + 50, + 248, + 55, + 178, + 245, + 152, + 170, + 58, + 252, + 55, + 18, + 178, + 134, + 48, + 96, + 44, + 244, + 109, + 156, + 42, + 197, + 99, + 19, + 126, + 110, + 125, + 65, + 71, + 219, + 149, + 123, + 147, + 23, + 199, + 18, + 229, + 203, + 14, + 224, + 243, + 221, + 194, + 144, + 16, + 174, + 22, + 102, + 13, + 23, + 124, + 7, + 224, + 64, + 6, + 227, + 210, + 210, + 243, + 32, + 142, + 93, + 185, + 219, + 110, + 90, + 194, + 128, + 212, + 138, + 14, + 225, + 230, + 168, + 133, + 59, + 194, + 61, + 230, + 41, + 21, + 223, + 167, + 6, + 38, + 155, + 164, + 234, + 202, + 3, + 13, + 37, + 174, + 69, + 24, + 0, + 170, + 194, + 191, + 230, + 201, + 202, + 1, + 169, + 11, + 45, + 24, + 68, + 118, + 73, + 1, + 15, + 73, + 136, + 60, + 114, + 248, + 24, + 251, + 226, + 39, + 12, + 90, + 253, + 216, + 106, + 24, + 248, + 112, + 174, + 149, + 104, + 120, + 98, + 81, + 107, + 86, + 219, + 219, + 59, + 247, + 85, + 190, + 186, + 182, + 53, + 105, + 141, + 88, + 238, + 6, + 204, + 206, + 122, + 88, + 155, + 10, + 146, + 244, + 135, + 36, + 5, + 31, + 109, + 248, + 126, + 139, + 115, + 186, + 221, + 206, + 29, + 133, + 67, + 123, + 145, + 238, + 129, + 147, + 115, + 36, + 88, + 123, + 230, + 98, + 23, + 79, + 2, + 221, + 34, + 132, + 122, + 202, + 147, + 38, + 7, + 222, + 88, + 7, + 68, + 238, + 246, + 216, + 149, + 223, + 252, + 4, + 132, + 183, + 82, + 215, + 150, + 210, + 186, + 148, + 111, + 124, + 151, + 133, + 219, + 40, + 155, + 225, + 60, + 3, + 0, + 147, + 107, + 105, + 174, + 130, + 227, + 125, + 133, + 25, + 143, + 23, + 151, + 194, + 165, + 119, + 30, + 240, + 142, + 122, + 80, + 187, + 87, + 235, + 248, + 203, + 53, + 50, + 55, + 219, + 90, + 138, + 49, + 86, + 73, + 159, + 20, + 192, + 124, + 135, + 161, + 231, + 24, + 241, + 238, + 238, + 102, + 138, + 115, + 189, + 73, + 252, + 14, + 214, + 58, + 186, + 104, + 178, + 12, + 189, + 39, + 14, + 178, + 63, + 23, + 53, + 57, + 85, + 214, + 91, + 9, + 84, + 137, + 130, + 22, + 122, + 22, + 39, + 181, + 211, + 91, + 192, + 91, + 121, + 14, + 215, + 12, + 232, + 196, + 21, + 172, + 218, + 106, + 255, + 180, + 63, + 204, + 171, + 32, + 245, + 189, + 240, + 84, + 189, + 82, + 58, + 171, + 35, + 48, + 240, + 250, + 180, + 2, + 46, + 215, + 236, + 2, + 140, + 245, + 122, + 82, + 200, + 97, + 251, + 78, + 194, + 127, + 252, + 14, + 112, + 194, + 90, + 114, + 51, + 110, + 199, + 210, + 227, + 22, + 127, + 189, + 130, + 55, + 1, + 14, + 62, + 108, + 118, + 172, + 224, + 29, + 211, + 169, + 40, + 177, + 122, + 17, + 160, + 224, + 252, + 101, + 167, + 165, + 87, + 178, + 153, + 102, + 103, + 121, + 32, + 62, + 30, + 97, + 111, + 79, + 4, + 244, + 36, + 161, + 35, + 179, + 1, + 116, + 62, + 181, + 111, + 12, + 111, + 167, + 26, + 187, + 36, + 200, + 236, + 178, + 167, + 83, + 106, + 78, + 220, + 237, + 103, + 177, + 248, + 25, + 218, + 48, + 191, + 87, + 218, + 168, + 115, + 194, + 80, + 34, + 57, + 165, + 188, + 35, + 120, + 178, + 55, + 82, + 194, + 253, + 17, + 149, + 109, + 60, + 221, + 110, + 125, + 51, + 42, + 58, + 200, + 167, + 32, + 172, + 213, + 1, + 25, + 88, + 167, + 93, + 144, + 62, + 205, + 42, + 102, + 15, + 163, + 234, + 7, + 100, + 253, + 39, + 127, + 37, + 69, + 165, + 33, + 71, + 156, + 106, + 178, + 17, + 91, + 177, + 113, + 180, + 210, + 151, + 145, + 76, + 60, + 177, + 193, + 183, + 4, + 144, + 103, + 10, + 211, + 193, + 49, + 144, + 184, + 178, + 216, + 3, + 30, + 214, + 104, + 187, + 172, + 233, + 158, + 224, + 23, + 212, + 66, + 131, + 250, + 103, + 220, + 81, + 14, + 17, + 119, + 127, + 6, + 149, + 255, + 185, + 226, + 66, + 222, + 132, + 227, + 13, + 137, + 103, + 57, + 219, + 41, + 154, + 36, + 108, + 160, + 144, + 77, + 30, + 18, + 178, + 125, + 205, + 122, + 131, + 255, + 234, + 232, + 173, + 157, + 204, + 161, + 117, + 129, + 130, + 67, + 158, + 85, + 85, + 155, + 54, + 98, + 85, + 10, + 43, + 222, + 64, + 97, + 212, + 111, + 108, + 114, + 116, + 106, + 138, + 79, + 11, + 30, + 243, + 54, + 195, + 103, + 61, + 13, + 124, + 109, + 9, + 43, + 202, + 117, + 191, + 189, + 36, + 217, + 68, + 27, + 44, + 128, + 149, + 190, + 175, + 185, + 101, + 107, + 35, + 63, + 108, + 175, + 227, + 246, + 252, + 242, + 141, + 8, + 121, + 62, + 91, + 180, + 26, + 155, + 67, + 138, + 83, + 24, + 136, + 96, + 46, + 49, + 104, + 121, + 60, + 10, + 207, + 158, + 188, + 124, + 192, + 127, + 122, + 135, + 103, + 75, + 132, + 248, + 17, + 148, + 95, + 55, + 168, + 230, + 48, + 255, + 12, + 18, + 207, + 61, + 149, + 195, + 219, + 220, + 93, + 116, + 200, + 56, + 253, + 34, + 224, + 176, + 205, + 125, + 121, + 152, + 189, + 54, + 182, + 183, + 123, + 35, + 149, + 124, + 37, + 152, + 153, + 104, + 205, + 27, + 254, + 253, + 57, + 127, + 157, + 195, + 159, + 121, + 243, + 147, + 253, + 190, + 119, + 70, + 150, + 113, + 156, + 224, + 101, + 27, + 180, + 174, + 12, + 126, + 32, + 128, + 123, + 12, + 160, + 179, + 111, + 145, + 81, + 255, + 48, + 8, + 175, + 248, + 68, + 37, + 239, + 190, + 128, + 218, + 154, + 128, + 233, + 35, + 208, + 120, + 134, + 4, + 13, + 118, + 80, + 166, + 86, + 124, + 140, + 217, + 3, + 142, + 225, + 27, + 192, + 240, + 67, + 63, + 70, + 79, + 147, + 102, + 13, + 164, + 233, + 90, + 90, + 113, + 196, + 132, + 112, + 92, + 125, + 251, + 78, + 56, + 56, + 103, + 24, + 210, + 95, + 40, + 67, + 51, + 110, + 177, + 233, + 154, + 233, + 100, + 42, + 98, + 152, + 115, + 112, + 158, + 77, + 28, + 197, + 9, + 96, + 27, + 75, + 150, + 45, + 150, + 94, + 140, + 87, + 154, + 251, + 202, + 15, + 85, + 21, + 167, + 184, + 131, + 53, + 82, + 13, + 172, + 216, + 161, + 242, + 146, + 108, + 91, + 79, + 201, + 230, + 198, + 199, + 114, + 109, + 149, + 145, + 232, + 128, + 142, + 169, + 202, + 80, + 167, + 61, + 233, + 185, + 102, + 241, + 237, + 255, + 117, + 19, + 216, + 220, + 142, + 171, + 178, + 188, + 7, + 179, + 64, + 209, + 122, + 34, + 180, + 99, + 174, + 173, + 205, + 204, + 170, + 240, + 47, + 45, + 179, + 63, + 199, + 184, + 38, + 40, + 93, + 198, + 98, + 174, + 157, + 181, + 242, + 125, + 153, + 63, + 201, + 209, + 247, + 222, + 74, + 209, + 217, + 41, + 197, + 81, + 6, + 187, + 2, + 168, + 155, + 216, + 162, + 69, + 238, + 25, + 65, + 249, + 24, + 185, + 93, + 117, + 229, + 231, + 209, + 45, + 2, + 76, + 120, + 243, + 227, + 122, + 7, + 144, + 225, + 26, + 216, + 10, + 250, + 247, + 77, + 141, + 87, + 86, + 218, + 162, + 226, + 164, + 145, + 164, + 233, + 25, + 244, + 158, + 29, + 171, + 114, + 251, + 81, + 49, + 176, + 112, + 126, + 189, + 69, + 193, + 217, + 215, + 47, + 211, + 148, + 141, + 244, + 158, + 112, + 191, + 103, + 176, + 88, + 66, + 211, + 1, + 6, + 171, + 162, + 42, + 195, + 65, + 49, + 156, + 163, + 77, + 195, + 19, + 114, + 17, + 190, + 45, + 211, + 218, + 82, + 80, + 18, + 47, + 180, + 103, + 146, + 25, + 2, + 168, + 132, + 189, + 227, + 164, + 255, + 204, + 137, + 18, + 95, + 137, + 15, + 99, + 104, + 212, + 90, + 152, + 31, + 149, + 241, + 215, + 209, + 52, + 114, + 195, + 97, + 234, + 133, + 114, + 238, + 186, + 74, + 214, + 61, + 150, + 180, + 222, + 167, + 244, + 208, + 94, + 112, + 127, + 119, + 193, + 19, + 185, + 104, + 170, + 126, + 15, + 234, + 5, + 73, + 101, + 90, + 32, + 117, + 129, + 92, + 100, + 215, + 163, + 49, + 187, + 48, + 140, + 188, + 132, + 67, + 214, + 233, + 43, + 139, + 70, + 107, + 176, + 231, + 45, + 121, + 109, + 212, + 11, + 21, + 83, + 44, + 103, + 37, + 112, + 5, + 103, + 59, + 10, + 191, + 255, + 110, + 109, + 139, + 208, + 51, + 177, + 75, + 205, + 130, + 3, + 51, + 9, + 130, + 31, + 40, + 69, + 55, + 62, + 185, + 13, + 241, + 44, + 219, + 191, + 88, + 163, + 89, + 160, + 30, + 208, + 27, + 251, + 241, + 37, + 253, + 228, + 220, + 226, + 43, + 214, + 145, + 122, + 97, + 224, + 157, + 205, + 166, + 104, + 249, + 83, + 95, + 77, + 35, + 100, + 12, + 36, + 57, + 222, + 66, + 237, + 170, + 224, + 134, + 57, + 123, + 110, + 125, + 69, + 44, + 129, + 12, + 204, + 136, + 93, + 231, + 217, + 125, + 216, + 87, + 97, + 166, + 198, + 105, + 201, + 248, + 86, + 89, + 173, + 85, + 149, + 199, + 241, + 16, + 242, + 174, + 19, + 231, + 175, + 241, + 47, + 210, + 152, + 152, + 63, + 80, + 211, + 237, + 254, + 108, + 175, + 225, + 21, + 153, + 29, + 201, + 93, + 4, + 254, + 215, + 6, + 148, + 219, + 32, + 245, + 242, + 119, + 38, + 33, + 78, + 245, + 109, + 136, + 24, + 57, + 157, + 106, + 78, + 180, + 61, + 101, + 197, + 45, + 212, + 90, + 45, + 248, + 233, + 216, + 39, + 140, + 14, + 50, + 30, + 234, + 85, + 65, + 190, + 48, + 43, + 201, + 163, + 230, + 5, + 186, + 92, + 139, + 43, + 255, + 235, + 209, + 134, + 145, + 60, + 36, + 224, + 132, + 123, + 80, + 246, + 206, + 173, + 205, + 130, + 92, + 173, + 83, + 250, + 57, + 215, + 53, + 32, + 217, + 180, + 120, + 89, + 103, + 30, + 223, + 250, + 154, + 65, + 58, + 168, + 166, + 111, + 232, + 9, + 15, + 221, + 138, + 93, + 153, + 3, + 10, + 146, + 172, + 155, + 127, + 130, + 178, + 152, + 116, + 0, + 115, + 192, + 230, + 143, + 68, + 133, + 82, + 118, + 46, + 247, + 228, + 85, + 176, + 56, + 191, + 116, + 74, + 43, + 13, + 132, + 134, + 210, + 205, + 112, + 6, + 232, + 152, + 107, + 165, + 239, + 47, + 193, + 138, + 95, + 250, + 34, + 135, + 181, + 185, + 43, + 52, + 5, + 60, + 56, + 112, + 250, + 128, + 243, + 149, + 220, + 52, + 73, + 69, + 57, + 187, + 153, + 169, + 111, + 142, + 150, + 158, + 123, + 96, + 234, + 108, + 254, + 38, + 214, + 243, + 237, + 87, + 177, + 23, + 31, + 140, + 251, + 186, + 25, + 104, + 128, + 129, + 28, + 73, + 5, + 128, + 155, + 72, + 116, + 185, + 155, + 97, + 166, + 225, + 111, + 107, + 126, + 62, + 75, + 222, + 76, + 119, + 214, + 130, + 222, + 201, + 238, + 237, + 144, + 36, + 100, + 43, + 0, + 238, + 79, + 30, + 122, + 190, + 186, + 135, + 9, + 27, + 167, + 37, + 235, + 242, + 20, + 222, + 37, + 158, + 35, + 195, + 146, + 81, + 175, + 92, + 52, + 181, + 236, + 222, + 251, + 127, + 147, + 183, + 196, + 180, + 171, + 180, + 84, + 130, + 130, + 75, + 53, + 120, + 254, + 60, + 67, + 16, + 63, + 245, + 75, + 232, + 147, + 48, + 216, + 50, + 31, + 113, + 95, + 23, + 115, + 13, + 217, + 165, + 188, + 186, + 42, + 143, + 123, + 150, + 80, + 89, + 171, + 144, + 230, + 214, + 226, + 58, + 187, + 28, + 155, + 86, + 162, + 191, + 101, + 201, + 202, + 253, + 54, + 183, + 106, + 95, + 20, + 92, + 133, + 81, + 99, + 68, + 242, + 115, + 103, + 11, + 59, + 45, + 32, + 249, + 96, + 180, + 1, + 244, + 231, + 107, + 102, + 128, + 195, + 254, + 54, + 6, + 160, + 254, + 44, + 110, + 26, + 161, + 187, + 253, + 242, + 36, + 9, + 254, + 221, + 47, + 88, + 188, + 13, + 242, + 29, + 91, + 62, + 254, + 237, + 210, + 65, + 139, + 26, + 214, + 77, + 150, + 52, + 142, + 10, + 96, + 159, + 152, + 41, + 84, + 170, + 45, + 37, + 134, + 34, + 245, + 98, + 185, + 128, + 148, + 213, + 2, + 220, + 53, + 199, + 172, + 218, + 216, + 127, + 31, + 0, + 56, + 200, + 34, + 190, + 73, + 180, + 227, + 225, + 215, + 241, + 244, + 95, + 147, + 141, + 160, + 42, + 47, + 194, + 87, + 61, + 244, + 119, + 151, + 119, + 210, + 204, + 249, + 109, + 49, + 46, + 182, + 231, + 96, + 74, + 116, + 113, + 5, + 250, + 164, + 87, + 12, + 207, + 61, + 48, + 228, + 139, + 140, + 235, + 178, + 186, + 191, + 192, + 102, + 128, + 71, + 77, + 209, + 37, + 29, + 43, + 20, + 26, + 28, + 157, + 90, + 81, + 15, + 210, + 146, + 40, + 198, + 37, + 51, + 116, + 230, + 211, + 196, + 53, + 123, + 66, + 60, + 184, + 100, + 84, + 158, + 36, + 39, + 73, + 6, + 162, + 144, + 212, + 55, + 171, + 224, + 235, + 132, + 22, + 28, + 58, + 96, + 174, + 68, + 124, + 15, + 26, + 112, + 164, + 153, + 64, + 82, + 60, + 38, + 164, + 238, + 158, + 216, + 131, + 40, + 98, + 205, + 211, + 85, + 211, + 157, + 238, + 219, + 57, + 221, + 221, + 133, + 186, + 109, + 190, + 147, + 243, + 219, + 6, + 109, + 142, + 113, + 129, + 176, + 107, + 93, + 110, + 112, + 12, + 105, + 48, + 60, + 242, + 231, + 123, + 126, + 13, + 155, + 155, + 102, + 130, + 149, + 141, + 119, + 235, + 78, + 6, + 9, + 140, + 21, + 151, + 30, + 176, + 13, + 116, + 35, + 133, + 63, + 108, + 78, + 235, + 97, + 244, + 20, + 83, + 206, + 249, + 232, + 214, + 122, + 157, + 178, + 183, + 195, + 67, + 187, + 28, + 204, + 249, + 251, + 92, + 186, + 255, + 189, + 185, + 127, + 157, + 210, + 52, + 158, + 203, + 130, + 237, + 219, + 215, + 94, + 235, + 61, + 255, + 14, + 188, + 142, + 20, + 228, + 107, + 191, + 144, + 129, + 182, + 155, + 144, + 248, + 100, + 153, + 201, + 232, + 255, + 147, + 43, + 109, + 121, + 85, + 29, + 163, + 37, + 185, + 35, + 202, + 142, + 198, + 219, + 20, + 121, + 25, + 90, + 153, + 153, + 196, + 58, + 198, + 50, + 116, + 137, + 193, + 105, + 79, + 65, + 178, + 149, + 145, + 129, + 215, + 213, + 145, + 167, + 85, + 100, + 194, + 127, + 61, + 68, + 33, + 173, + 62, + 192, + 65, + 212, + 118, + 21, + 216, + 162, + 71, + 160, + 2, + 243, + 183, + 125, + 178, + 213, + 170, + 54, + 147, + 138, + 237, + 149, + 131, + 80, + 153, + 144, + 39, + 5, + 128, + 127, + 167, + 90, + 176, + 58, + 148, + 159, + 248, + 167, + 168, + 86, + 28, + 242, + 128, + 117, + 4, + 73, + 51, + 67, + 109, + 139, + 169, + 35, + 184, + 243, + 7, + 243, + 82, + 124, + 45, + 228, + 62, + 107, + 117, + 25, + 50, + 148, + 17, + 204, + 205, + 23, + 129, + 225, + 75, + 205, + 158, + 188, + 115, + 233, + 99, + 142, + 42, + 49, + 196, + 0, + 246, + 36, + 111, + 3, + 63, + 238, + 108, + 172, + 232, + 162, + 43, + 160, + 64, + 199, + 207, + 25, + 67, + 18, + 71, + 48, + 230, + 234, + 149, + 226, + 228, + 46, + 61, + 152, + 83, + 171, + 184, + 13, + 130, + 115, + 245, + 99, + 252, + 225, + 145, + 108, + 56, + 177, + 5, + 180, + 201, + 9, + 186, + 1, + 235, + 112, + 204, + 71, + 84, + 187, + 28, + 34, + 35, + 86, + 7, + 57, + 28, + 0, + 45, + 155, + 221, + 219, + 23, + 204, + 58, + 186, + 242, + 221, + 216, + 78, + 238, + 198, + 141, + 160, + 100, + 163, + 125, + 176, + 19, + 102, + 128, + 132, + 43, + 223, + 208, + 126, + 204, + 175, + 208, + 183, + 185, + 204, + 30, + 213, + 62, + 25, + 190, + 119, + 104, + 36, + 140, + 219, + 62, + 121, + 237, + 78, + 25, + 83, + 43, + 211, + 192, + 23, + 57, + 72, + 124, + 227, + 213, + 164, + 94, + 237, + 48, + 15, + 183, + 65, + 173, + 115, + 203, + 249, + 22, + 129, + 42, + 123, + 106, + 124, + 47, + 205, + 97, + 207, + 226, + 85, + 104, + 55, + 179, + 235, + 133, + 125, + 124, + 126, + 2, + 229, + 77, + 218, + 217, + 158, + 204, + 21, + 167, + 175, + 193, + 176, + 211, + 199, + 113, + 214, + 52, + 62, + 117, + 238, + 186, + 55, + 139, + 14, + 114, + 150, + 45, + 145, + 36, + 213, + 52, + 41, + 205, + 151, + 9, + 62, + 38, + 49, + 34, + 160, + 5, + 226, + 188, + 228, + 165, + 11, + 79, + 79, + 174, + 210, + 48, + 119, + 236, + 148, + 168, + 109, + 6, + 105, + 151, + 28, + 177, + 57, + 145, + 120, + 13, + 31, + 106, + 27, + 64, + 194, + 23, + 114, + 180, + 38, + 31, + 113, + 193, + 97, + 212, + 133, + 14, + 118, + 28, + 109, + 220, + 84, + 21, + 255, + 168, + 16, + 51, + 112, + 174, + 245, + 226, + 244, + 11, + 112, + 237, + 175, + 120, + 141, + 109, + 32, + 175, + 89, + 249, + 5, + 89, + 116, + 188, + 39, + 3, + 99, + 20, + 136, + 68, + 222, + 227, + 93, + 225, + 67, + 62, + 98, + 122, + 191, + 81, + 166, + 12, + 161, + 202, + 146, + 218, + 151, + 18, + 23, + 131, + 72, + 50, + 23, + 8, + 189, + 109, + 208, + 52, + 227, + 161, + 187, + 226, + 69, + 178, + 120, + 82, + 7, + 186, + 71, + 230, + 101, + 116, + 17, + 68, + 217, + 122, + 58, + 126, + 143, + 30, + 93, + 208, + 96, + 246, + 197, + 38, + 197, + 73, + 161, + 200, + 13, + 96, + 117, + 54, + 227, + 217, + 62, + 175, + 129, + 38, + 216, + 122, + 11, + 97, + 93, + 151, + 215, + 6, + 252, + 79, + 93, + 128, + 222, + 219, + 150, + 181, + 153, + 15, + 221, + 202, + 178, + 67, + 58, + 152, + 74, + 56, + 248, + 123, + 121, + 241, + 203, + 19, + 90, + 146, + 166, + 173, + 131, + 49, + 193, + 179, + 205, + 198, + 76, + 69, + 251, + 179, + 38, + 117, + 51, + 155, + 201, + 142, + 218, + 34, + 10, + 226, + 111, + 185, + 254, + 160, + 128, + 178, + 223, + 250, + 214, + 199, + 68, + 231, + 88, + 249, + 40, + 80, + 46, + 182, + 237, + 36, + 41, + 124, + 75, + 77, + 12, + 95, + 193, + 48, + 102, + 66, + 239, + 117, + 48, + 88, + 180, + 239, + 187, + 202, + 26, + 123, + 228, + 194, + 203, + 156, + 118, + 207, + 107, + 5, + 213, + 130, + 111, + 100, + 19, + 31, + 233, + 171, + 80, + 58, + 30, + 91, + 161, + 132, + 187, + 27, + 169, + 158, + 86, + 121, + 74, + 147, + 5, + 82, + 84, + 149, + 93, + 212, + 148, + 65, + 189, + 20, + 17, + 22, + 115, + 177, + 231, + 198, + 198, + 41, + 186, + 114, + 165, + 110, + 218, + 117, + 201, + 121, + 58, + 163, + 167, + 228, + 148, + 188, + 251, + 240, + 124, + 240, + 62, + 228, + 188, + 141, + 189, + 3, + 178, + 79, + 225, + 150, + 185, + 181, + 189, + 77, + 149, + 167, + 16, + 184, + 241, + 80, + 204, + 42, + 13, + 94, + 36, + 173, + 227, + 239, + 172, + 135, + 203, + 247, + 119, + 162, + 87, + 33, + 115, + 79, + 24, + 84, + 238, + 51, + 225, + 167, + 169, + 183, + 122, + 8, + 117, + 156, + 61, + 63, + 99, + 143, + 25, + 209, + 202, + 95, + 9, + 42, + 157, + 81, + 35, + 163, + 242, + 149, + 6, + 70, + 9, + 253, + 84, + 138, + 128, + 171, + 107, + 38, + 123, + 22, + 83, + 93, + 25, + 133, + 124, + 252, + 183, + 5, + 17, + 12, + 64, + 153, + 211, + 128, + 85, + 120, + 37, + 25, + 169, + 30, + 110, + 121, + 118, + 126, + 2, + 12, + 72, + 168, + 186, + 0, + 143, + 86, + 115, + 51, + 152, + 205, + 47, + 125, + 162, + 111, + 90, + 3, + 4, + 218, + 46, + 242, + 110, + 35, + 58, + 93, + 3, + 116, + 24, + 217, + 43, + 172, + 16, + 173, + 124, + 173, + 77, + 185, + 120, + 133, + 1, + 41, + 80, + 38, + 38, + 183, + 61, + 97, + 1, + 202, + 14, + 240, + 18, + 176, + 180, + 243, + 235, + 16, + 172, + 25, + 92, + 215, + 244, + 37, + 148, + 118, + 197, + 84, + 133, + 91, + 108, + 207, + 220, + 30, + 43, + 137, + 254, + 73, + 159, + 7, + 195, + 121, + 15, + 120, + 203, + 16, + 140, + 111, + 162, + 121, + 173, + 57, + 241, + 205, + 245, + 164, + 119, + 199, + 230, + 116, + 17, + 15, + 193, + 151, + 247, + 78, + 250, + 119, + 132, + 23, + 255, + 27, + 12, + 177, + 121, + 134, + 101, + 176, + 246, + 97, + 84, + 209, + 242, + 171, + 68, + 116, + 53, + 15, + 158, + 164, + 153, + 181, + 119, + 72, + 122, + 44, + 110, + 252, + 16, + 111, + 154, + 207, + 201, + 13, + 249, + 108, + 57, + 56, + 189, + 31, + 176, + 164, + 54, + 74, + 107, + 243, + 243, + 247, + 158, + 137, + 192, + 137, + 95, + 131, + 20, + 154, + 78, + 185, + 219, + 109, + 75, + 4, + 44, + 91, + 240, + 19, + 212, + 210, + 171, + 77, + 99, + 103, + 161, + 58, + 51, + 166, + 93, + 34, + 206, + 226, + 227, + 244, + 8, + 37, + 63, + 34, + 134, + 154, + 22, + 9, + 40, + 196, + 65, + 219, + 37, + 178, + 167, + 157, + 198, + 3, + 50, + 89, + 201, + 0, + 162, + 31, + 31, + 3, + 253, + 207, + 19, + 14, + 86, + 71, + 76, + 238, + 175, + 95, + 239, + 206, + 21, + 87, + 173, + 44, + 219, + 7, + 146, + 252, + 220, + 88, + 28, + 128, + 153, + 11, + 143, + 233, + 95, + 47, + 144, + 119, + 29, + 219, + 161, + 105, + 65, + 246, + 193, + 120, + 73, + 202, + 71, + 12, + 228, + 51, + 96, + 191, + 147, + 102, + 89, + 225, + 0, + 142, + 67, + 226, + 182, + 221, + 102, + 63, + 124, + 9, + 148, + 235, + 246, + 201, + 43, + 142, + 139, + 122, + 143, + 3, + 10, + 4, + 42, + 3, + 236, + 73, + 253, + 221, + 30, + 41, + 255, + 199, + 247, + 157, + 195, + 80, + 158, + 96, + 115, + 202, + 167, + 98, + 55, + 218, + 198, + 233, + 165, + 197, + 203, + 199, + 177, + 110, + 67, + 173, + 238, + 140, + 28, + 163, + 135, + 246, + 245, + 242, + 26, + 27, + 165, + 227, + 208, + 163, + 175, + 134, + 53, + 217, + 93, + 13, + 105, + 194, + 239, + 33, + 202, + 217, + 68, + 228, + 33, + 38, + 132, + 82, + 213, + 231, + 104, + 242, + 222, + 94, + 66, + 231, + 186, + 94, + 115, + 150, + 247, + 229, + 199, + 193, + 247, + 54, + 122, + 174, + 74, + 207, + 214, + 60, + 175, + 46, + 199, + 232, + 155, + 35, + 75, + 98, + 51, + 214, + 255, + 80, + 59, + 216, + 250, + 166, + 160, + 120, + 201, + 179, + 255, + 38, + 158, + 244, + 73, + 19, + 188, + 102, + 142, + 76, + 160, + 239, + 32, + 128, + 10, + 82, + 181, + 34, + 156, + 167, + 242, + 151, + 117, + 167, + 41, + 127, + 229, + 171, + 181, + 247, + 72, + 217, + 211, + 161, + 3, + 41, + 10, + 221, + 105, + 172, + 223, + 13, + 128, + 176, + 247, + 242, + 90, + 5, + 251, + 233, + 70, + 131, + 211, + 14, + 232, + 120, + 23, + 106, + 121, + 75, + 150, + 138, + 144, + 198, + 214, + 247, + 236, + 239, + 5, + 254, + 239, + 94, + 86, + 176, + 52, + 1, + 239, + 195, + 96, + 28, + 35, + 141, + 143, + 233, + 76, + 219, + 27, + 89, + 72, + 7, + 57, + 199, + 204, + 1, + 208, + 222, + 105, + 165, + 119, + 116, + 216, + 154, + 83, + 188, + 142, + 193, + 23, + 177, + 140, + 28, + 236, + 232, + 69, + 101, + 18, + 205, + 36, + 195, + 105, + 164, + 12, + 183, + 189, + 137, + 23, + 23, + 130, + 93, + 191, + 4, + 62, + 126, + 24, + 250, + 192, + 237, + 224, + 67, + 17, + 23, + 27, + 121, + 43, + 244, + 56, + 21, + 169, + 34, + 135, + 174, + 101, + 207, + 134, + 158, + 95, + 161, + 0, + 233, + 205, + 218, + 196, + 255, + 192, + 197, + 193, + 107, + 253, + 166, + 20, + 244, + 40, + 159, + 58, + 61, + 31, + 90, + 145, + 86, + 73, + 146, + 78, + 99, + 26, + 92, + 118, + 116, + 36, + 85, + 69, + 106, + 138, + 40, + 184, + 78, + 37, + 98, + 99, + 93, + 115, + 5, + 60, + 217, + 182, + 249, + 75, + 181, + 104, + 73, + 31, + 13, + 247, + 73, + 134, + 42, + 201, + 147, + 74, + 240, + 155, + 95, + 86, + 243, + 214, + 242, + 202, + 157, + 123, + 78, + 157, + 55, + 79, + 2, + 149, + 170, + 75, + 28, + 230, + 180, + 71, + 171, + 78, + 205, + 163, + 235, + 141, + 49, + 210, + 140, + 25, + 76, + 169, + 108, + 24, + 211, + 247, + 98, + 164, + 254, + 26, + 181, + 153, + 206, + 163, + 30, + 184, + 65, + 143, + 56, + 174, + 120, + 191, + 166, + 146, + 197, + 36, + 17, + 235, + 238, + 87, + 15, + 230, + 62, + 134, + 210, + 236, + 187, + 79, + 61, + 95, + 86, + 39, + 18, + 30, + 196, + 155, + 181, + 163, + 132, + 97, + 50, + 97, + 203, + 218, + 70, + 10, + 72, + 217, + 5, + 75, + 5, + 176, + 84, + 222, + 208, + 84, + 170, + 92, + 181, + 42, + 66, + 116, + 104, + 4, + 217, + 88, + 228, + 66, + 21, + 136, + 245, + 44, + 187, + 222, + 207, + 201, + 120, + 159, + 172, + 236, + 180, + 163, + 79, + 223, + 57, + 33, + 237, + 209, + 93, + 53, + 194, + 123, + 118, + 122, + 251, + 232, + 122, + 49, + 120, + 28, + 43, + 109, + 7, + 111, + 145, + 237, + 79, + 51, + 133, + 1, + 204, + 211, + 26, + 129, + 26, + 52, + 46, + 196, + 190, + 168, + 161, + 95, + 41, + 181, + 250, + 12, + 191, + 74, + 183, + 79, + 230, + 74, + 121, + 129, + 131, + 229, + 99, + 114, + 39, + 245, + 78, + 103, + 170, + 29, + 0, + 47, + 84, + 232, + 249, + 1, + 219, + 23, + 223, + 131, + 171, + 224, + 136, + 173, + 119, + 99, + 254, + 134, + 82, + 8, + 248, + 20, + 172, + 178, + 238, + 23, + 21, + 182, + 74, + 21, + 187, + 84, + 60, + 209, + 95, + 238, + 132, + 129, + 168, + 215, + 136, + 208, + 58, + 210, + 183, + 56, + 200, + 116, + 121, + 175, + 179, + 81, + 38, + 227, + 44, + 13, + 145, + 40, + 209, + 150, + 220, + 23, + 89, + 115, + 155, + 186, + 97, + 216, + 198, + 59, + 32, + 50, + 162, + 179, + 213, + 159, + 64, + 163, + 183, + 239, + 146, + 235, + 242, + 195, + 60, + 101, + 251, + 35, + 166, + 228, + 149, + 142, + 172, + 126, + 232, + 223, + 97, + 150, + 65, + 36, + 221, + 196, + 149, + 206, + 177, + 168, + 66, + 141, + 65, + 70, + 230, + 50, + 193, + 109, + 36, + 152, + 52, + 148, + 242, + 115, + 40, + 76, + 140, + 17, + 239, + 46, + 4, + 11, + 144, + 200, + 222, + 158, + 56, + 192, + 208, + 97, + 68, + 242, + 206, + 216, + 209, + 81, + 144, + 154, + 22, + 59, + 194, + 253, + 29, + 124, + 255, + 174, + 209, + 225, + 126, + 217, + 31, + 134, + 47, + 202, + 158, + 250, + 2, + 12, + 66, + 4, + 67, + 18, + 170, + 217, + 205, + 191, + 86, + 250, + 122, + 72, + 167, + 118, + 221, + 31, + 34, + 54, + 72, + 147, + 108, + 191, + 213, + 61, + 24, + 52, + 59, + 71, + 91, + 114, + 152, + 236, + 24, + 71, + 129, + 249, + 246, + 129, + 86, + 197, + 61, + 64, + 252, + 85, + 31, + 187, + 90, + 192, + 108, + 208, + 221, + 225, + 186, + 239, + 86, + 189, + 186, + 210, + 14, + 234, + 206, + 57, + 148, + 244, + 254, + 127, + 182, + 174, + 188, + 203, + 1, + 249, + 31, + 117, + 82, + 244, + 43, + 170, + 239, + 2, + 244, + 33, + 151, + 222, + 24, + 135, + 22, + 155, + 31, + 4, + 199, + 210, + 12, + 177, + 96, + 226, + 91, + 197, + 87, + 236, + 87, + 93, + 234, + 254, + 17, + 153, + 216, + 140, + 3, + 108, + 131, + 175, + 136, + 190, + 90, + 236, + 44, + 176, + 77, + 161, + 2, + 201, + 120, + 215, + 78, + 72, + 163, + 71, + 8, + 181, + 225, + 203, + 223, + 204, + 204, + 148, + 232, + 162, + 17, + 254, + 156, + 73, + 74, + 176, + 218, + 184, + 193, + 113, + 112, + 30, + 235, + 129, + 11, + 229, + 133, + 115, + 159, + 51, + 137, + 134, + 173, + 251, + 213, + 41, + 99, + 117, + 239, + 251, + 7, + 145, + 19, + 87, + 208, + 89, + 49, + 164, + 146, + 6, + 186, + 236, + 80, + 183, + 247, + 17, + 13, + 163, + 23, + 98, + 89, + 165, + 31, + 130, + 93, + 231, + 90, + 88, + 138, + 116, + 197, + 133, + 229, + 21, + 8, + 121, + 6, + 30, + 29, + 146, + 232, + 237, + 17, + 51, + 114, + 106, + 137, + 127, + 13, + 195, + 251, + 25, + 188, + 236, + 28, + 12, + 202, + 216, + 186, + 97, + 181, + 32, + 88, + 215, + 248, + 77, + 237, + 95, + 227, + 208, + 2, + 157, + 222, + 32, + 45, + 31, + 225, + 189, + 14, + 26, + 218, + 72, + 125, + 29, + 66, + 151, + 63, + 10, + 25, + 1, + 26, + 14, + 249, + 181, + 243, + 127, + 134, + 185, + 150, + 243, + 21, + 72, + 60, + 174, + 9, + 45, + 20, + 115, + 102, + 104, + 129, + 111, + 195, + 10, + 99, + 156, + 143, + 38, + 241, + 57, + 79, + 246, + 160, + 111, + 43, + 181, + 163, + 238, + 149, + 171, + 201, + 30, + 112, + 219, + 236, + 127, + 158, + 214, + 180, + 221, + 54, + 166, + 48, + 99, + 133, + 194, + 2, + 153, + 137, + 162, + 17, + 182, + 5, + 223, + 9, + 177, + 47, + 147, + 125, + 78, + 48, + 7, + 185, + 164, + 127, + 178, + 28, + 251, + 153, + 42, + 198, + 206, + 134, + 138, + 29, + 248, + 79, + 97, + 189, + 228, + 96, + 48, + 151, + 149, + 224, + 172, + 43, + 186, + 27, + 210, + 252, + 94, + 160, + 179, + 1, + 186, + 115, + 112, + 90, + 243, + 116, + 118, + 165, + 92, + 214, + 64, + 15, + 169, + 152, + 25, + 211, + 167, + 174, + 5, + 33, + 137, + 193, + 182, + 138, + 54, + 20, + 199, + 174, + 34, + 36, + 56, + 117, + 182, + 60, + 55, + 107, + 42, + 14, + 12, + 192, + 169, + 80, + 69, + 189, + 245, + 13, + 1, + 87, + 109, + 137, + 4, + 218, + 107, + 219, + 199, + 203, + 94, + 140, + 160, + 245, + 49, + 99, + 177, + 161, + 73, + 151, + 22, + 244, + 164, + 252, + 190, + 167, + 120, + 122, + 123, + 128, + 99, + 141, + 152, + 3, + 243, + 192, + 240, + 63, + 70, + 134, + 92, + 246, + 191, + 138, + 166, + 113, + 115, + 160, + 175, + 238, + 135, + 239, + 242, + 39, + 203, + 132, + 68, + 89, + 96, + 22, + 103, + 57, + 212, + 155, + 173, + 203, + 64, + 126, + 198, + 59, + 5, + 72, + 94, + 237, + 75, + 172, + 174, + 30, + 177, + 130, + 13, + 74, + 197, + 40, + 246, + 54, + 195, + 134, + 146, + 193, + 185, + 223, + 109, + 2, + 104, + 32, + 166, + 95, + 74, + 235, + 123, + 36, + 78, + 0, + 247, + 210, + 218, + 87, + 170, + 14, + 226, + 91, + 33, + 182, + 91, + 238, + 61, + 55, + 53, + 242, + 44, + 145, + 197, + 124, + 195, + 21, + 192, + 15, + 250, + 179, + 33, + 38, + 169, + 17, + 120, + 102, + 226, + 62, + 230, + 83, + 83, + 63, + 114, + 39, + 179, + 100, + 16, + 221, + 243, + 59, + 96, + 112, + 96, + 36, + 167, + 36, + 195, + 38, + 148, + 51, + 243, + 34, + 106, + 179, + 188, + 86, + 39, + 158, + 20, + 100, + 91, + 206, + 222, + 37, + 122, + 6, + 212, + 135, + 31, + 190, + 196, + 39, + 183, + 175, + 10, + 206, + 57, + 162, + 228, + 247, + 88, + 77, + 2, + 237, + 184, + 157, + 55, + 39, + 46, + 5, + 211, + 203, + 97, + 89, + 137, + 170, + 186, + 43, + 143, + 140, + 11, + 169, + 230, + 95, + 239, + 230, + 5, + 128, + 120, + 222, + 87, + 132, + 127, + 32, + 148, + 183, + 16, + 252, + 160, + 158, + 39, + 171, + 204, + 139, + 133, + 170, + 89, + 15, + 29, + 215, + 135, + 234, + 194, + 236, + 41, + 129, + 252, + 135, + 226, + 173, + 228, + 97, + 103, + 184, + 146, + 117, + 41, + 115, + 195, + 157, + 93, + 151, + 87, + 186, + 245, + 1, + 115, + 131, + 237, + 148, + 224, + 117, + 207, + 227, + 230, + 40, + 181, + 133, + 189, + 62, + 204, + 162, + 201, + 185, + 249, + 253, + 255, + 134, + 104, + 31, + 101, + 140, + 63, + 254, + 78, + 212, + 24, + 17, + 0, + 43, + 202, + 30, + 211, + 23, + 27, + 231, + 111, + 115, + 2, + 151, + 7, + 34, + 194, + 204, + 117, + 19, + 204, + 120, + 204, + 221, + 159, + 96, + 169, + 226, + 213, + 28, + 99, + 100, + 67, + 163, + 125, + 228, + 25, + 81, + 116, + 72, + 48, + 254, + 179, + 162, + 170, + 159, + 121, + 101, + 16, + 33, + 250, + 254, + 12, + 96, + 164, + 181, + 108, + 3, + 84, + 56, + 75, + 173, + 34, + 222, + 95, + 140, + 73, + 177, + 74, + 247, + 180, + 17, + 134, + 33, + 138, + 12, + 151, + 35, + 200, + 46, + 168, + 61, + 6, + 110, + 115, + 182, + 99, + 213, + 124, + 250, + 30, + 43, + 7, + 32, + 39, + 183, + 202, + 27, + 205, + 149, + 103, + 129, + 111, + 144, + 88, + 196, + 56, + 112, + 125, + 56, + 39, + 112, + 167, + 228, + 182, + 9, + 221, + 240, + 247, + 121, + 154, + 246, + 26, + 28, + 252, + 166, + 131, + 95, + 106, + 175, + 80, + 224, + 17, + 183, + 50, + 27, + 242, + 46, + 216, + 230, + 239, + 117, + 151, + 97, + 117, + 112, + 244, + 158, + 153, + 10, + 217, + 42, + 100, + 253, + 7, + 27, + 174, + 57, + 187, + 0, + 93, + 36, + 81, + 140, + 91, + 137, + 165, + 232, + 66, + 149, + 169, + 97, + 167, + 214, + 218, + 210, + 22, + 4, + 48, + 181, + 247, + 111, + 11, + 230, + 80, + 35, + 163, + 123, + 233, + 254, + 247, + 165, + 86, + 7, + 63, + 69, + 153, + 104, + 240, + 94, + 252, + 184, + 171, + 232, + 188, + 139, + 65, + 53, + 73, + 144, + 22, + 85, + 230, + 126, + 188, + 67, + 228, + 129, + 199, + 91, + 91, + 17, + 79, + 116, + 201, + 95, + 244, + 32, + 15, + 207, + 105, + 187, + 15, + 202, + 131, + 202, + 193, + 206, + 50, + 234, + 191, + 213, + 10, + 243, + 16, + 69, + 20, + 237, + 239, + 56, + 37, + 190, + 182, + 18, + 122, + 125, + 163, + 49, + 170, + 235, + 213, + 83, + 43, + 83, + 101, + 155, + 151, + 59, + 209, + 69, + 52, + 140, + 17, + 244, + 239, + 218, + 151, + 237, + 92, + 223, + 147, + 28, + 147, + 190, + 241, + 94, + 16, + 70, + 218, + 35, + 246, + 246, + 96, + 20, + 138, + 240, + 99, + 14, + 85, + 173, + 214, + 226, + 234, + 127, + 232, + 195, + 217, + 217, + 20, + 78, + 139, + 36, + 52, + 102, + 9, + 212, + 123, + 93, + 208, + 184, + 209, + 230, + 57, + 216, + 118, + 105, + 217, + 53, + 84, + 69, + 191, + 184, + 148, + 81, + 134, + 154, + 250, + 74, + 134, + 171, + 211, + 186, + 201, + 140, + 245, + 134, + 17, + 23, + 10, + 234, + 48, + 114, + 115, + 33, + 254, + 113, + 154, + 123, + 16, + 245, + 231, + 45, + 228, + 76, + 69, + 201, + 239, + 241, + 208, + 9, + 166, + 101, + 101, + 143, + 39, + 163, + 44, + 17, + 43, + 233, + 36, + 187, + 238, + 228, + 79, + 194, + 254, + 136, + 225, + 27, + 226, + 123, + 160, + 155, + 162, + 30, + 59, + 31, + 172, + 208, + 198, + 161, + 45, + 173, + 20, + 86, + 152, + 212, + 9, + 126, + 90, + 66, + 112, + 153, + 76, + 108, + 119, + 93, + 55, + 103, + 208, + 52, + 127, + 129, + 133, + 228, + 54, + 127, + 42, + 3, + 194, + 104, + 251, + 141, + 70, + 66, + 222, + 242, + 30, + 166, + 151, + 59, + 239, + 146, + 92, + 109, + 48, + 222, + 128, + 219, + 245, + 23, + 109, + 132, + 122, + 7, + 96, + 228, + 79, + 212, + 232, + 93, + 139, + 169, + 67, + 22, + 156, + 150, + 115, + 45, + 10, + 62, + 82, + 39, + 122, + 206, + 193, + 167, + 129, + 71, + 246, + 243, + 235, + 175, + 201, + 177, + 65, + 144, + 191, + 27, + 67, + 117, + 218, + 108, + 118, + 230, + 241, + 183, + 162, + 116, + 23, + 141, + 234, + 146, + 170, + 79, + 166, + 55, + 86, + 68, + 107, + 155, + 24, + 112, + 243, + 224, + 32, + 36, + 145, + 86, + 17, + 75, + 177, + 39, + 209, + 149, + 125, + 21, + 158, + 114, + 166, + 255, + 18, + 12, + 203, + 218, + 153, + 60, + 80, + 182, + 135, + 163, + 67, + 171, + 61, + 248, + 41, + 141, + 53, + 90, + 33, + 227, + 167, + 117, + 42, + 23, + 112, + 191, + 245, + 211, + 128, + 172, + 32, + 250, + 242, + 65, + 59, + 68, + 43, + 59, + 10, + 159, + 244, + 192, + 121, + 10, + 155, + 103, + 118, + 163, + 168, + 157, + 225, + 2, + 108, + 240, + 42, + 140, + 166, + 134, + 155, + 209, + 86, + 23, + 221, + 241, + 196, + 149, + 40, + 255, + 57, + 184, + 216, + 61, + 232, + 116, + 195, + 166, + 220, + 41, + 23, + 241, + 150, + 160, + 161, + 145, + 190, + 45, + 221, + 206, + 29, + 251, + 164, + 108, + 213, + 63, + 250, + 38, + 9, + 147, + 13, + 35, + 17, + 59, + 220, + 10, + 251, + 143, + 219, + 39, + 88, + 11, + 234, + 114, + 13, + 180, + 206, + 84, + 70, + 186, + 186, + 152, + 182, + 111, + 43, + 243, + 206, + 211, + 77, + 156, + 216, + 139, + 138, + 174, + 69, + 143, + 167, + 60, + 195, + 237, + 36, + 163, + 54, + 140, + 199, + 60, + 118, + 61, + 178, + 88, + 152, + 165, + 203, + 38, + 186, + 252, + 217, + 116, + 27, + 198, + 25, + 138, + 254, + 128, + 108, + 238, + 184, + 191, + 28, + 254, + 139, + 224, + 175, + 17, + 153, + 6, + 20, + 109, + 60, + 238, + 19, + 199, + 43, + 154, + 47, + 250, + 249, + 126, + 227, + 2, + 23, + 217, + 141, + 184, + 226, + 166, + 55, + 214, + 157, + 215, + 106, + 148, + 134, + 129, + 68, + 134, + 161, + 4, + 68, + 123, + 173, + 128, + 236, + 119, + 208, + 119, + 83, + 243, + 162, + 184, + 99, + 57, + 177, + 23, + 119, + 139, + 246, + 166, + 89, + 220, + 228, + 189, + 247, + 13, + 207, + 49, + 198, + 134, + 100, + 59, + 215, + 146, + 68, + 188, + 205, + 42, + 46, + 52, + 164, + 245, + 174, + 125, + 171, + 60, + 80, + 130, + 83, + 141, + 206, + 213, + 120, + 196, + 48, + 119, + 3, + 22, + 138, + 158, + 196, + 62, + 212, + 237, + 195, + 39, + 251, + 51, + 75, + 152, + 230, + 79, + 49, + 121, + 50, + 149, + 162, + 129, + 137, + 129, + 45, + 100, + 141, + 143, + 110, + 108, + 77, + 84, + 71, + 13, + 17, + 163, + 220, + 229, + 146, + 18, + 137, + 145, + 149, + 214, + 70, + 117, + 160, + 21, + 39, + 78, + 85, + 145, + 105, + 151, + 7, + 197, + 58, + 62, + 7, + 121, + 49, + 110, + 232, + 131, + 172, + 232, + 47, + 138, + 212, + 233, + 59, + 184, + 163, + 50, + 32, + 166, + 247, + 155, + 189, + 43, + 133, + 83, + 163, + 226, + 34, + 245, + 14, + 200, + 228, + 219, + 255, + 181, + 250, + 114, + 67, + 245, + 157, + 113, + 131, + 96, + 56, + 7, + 128, + 221, + 111, + 159, + 84, + 193, + 63, + 206, + 98, + 66, + 206, + 15, + 182, + 231, + 35, + 12, + 198, + 240, + 3, + 111, + 13, + 26, + 238, + 246, + 65, + 238, + 205, + 104, + 8, + 67, + 150, + 185, + 86, + 143, + 144, + 186, + 152, + 167, + 70, + 44, + 177, + 218, + 235, + 96, + 71, + 129, + 161, + 76, + 192, + 239, + 253, + 205, + 75, + 186, + 106, + 95, + 213, + 136, + 230, + 158, + 114, + 242, + 32, + 75, + 182, + 27, + 39, + 60, + 197, + 154, + 67, + 161, + 29, + 105, + 117, + 17, + 243, + 198, + 106, + 76, + 98, + 104, + 42, + 47, + 62, + 243, + 120, + 117, + 206, + 33, + 115, + 56, + 94, + 208, + 27, + 66, + 206, + 18, + 43, + 189, + 136, + 168, + 196, + 144, + 193, + 128, + 15, + 0, + 169, + 188, + 242, + 23, + 84, + 195, + 22, + 189, + 165, + 141, + 85, + 160, + 195, + 131, + 72, + 131, + 165, + 183, + 241, + 221, + 76, + 157, + 99, + 89, + 246, + 184, + 19, + 24, + 63, + 167, + 97, + 10, + 211, + 9, + 68, + 3, + 45, + 32, + 241, + 26, + 125, + 76, + 157, + 41, + 197, + 16, + 6, + 153, + 208, + 133, + 170, + 219, + 118, + 61, + 208, + 48, + 24, + 245, + 242, + 129, + 212, + 12, + 248, + 137, + 26, + 132, + 198, + 142, + 19, + 144, + 138, + 229, + 40, + 40, + 247, + 95, + 82, + 148, + 32, + 157, + 13, + 88, + 3, + 36, + 234, + 184, + 228, + 26, + 22, + 243, + 20, + 38, + 100, + 199, + 84, + 55, + 87, + 214, + 255, + 174, + 237, + 148, + 82, + 253, + 41, + 211, + 179, + 95, + 166, + 171, + 128, + 27, + 219, + 191, + 149, + 230, + 163, + 246, + 78, + 167, + 43, + 73, + 40, + 49, + 105, + 231, + 225, + 88, + 221, + 208, + 237, + 63, + 246, + 11, + 166, + 12, + 155, + 175, + 196, + 37, + 177, + 138, + 139, + 44, + 174, + 199, + 36, + 37, + 5, + 129, + 205, + 45, + 7, + 228, + 26, + 7, + 54, + 89, + 149, + 89, + 146, + 197, + 200, + 191, + 50, + 150, + 146, + 130, + 239, + 91, + 255, + 46, + 237, + 234, + 169, + 69, + 228, + 56, + 103, + 179, + 112, + 95, + 16, + 226, + 61, + 185, + 167, + 198, + 106, + 72, + 172, + 25, + 101, + 39, + 177, + 137, + 164, + 54, + 136, + 203, + 252, + 147, + 4, + 128, + 162, + 189, + 184, + 55, + 127, + 75, + 135, + 81, + 54, + 158, + 111, + 20, + 18, + 193, + 40, + 171, + 25, + 178, + 43, + 192, + 153, + 49, + 76, + 1, + 85, + 209, + 177, + 30, + 189, + 220, + 39, + 117, + 21, + 117, + 206, + 153, + 121, + 173, + 60, + 44, + 57, + 51, + 230, + 72, + 223, + 209, + 122, + 76, + 46, + 186, + 71, + 60, + 42, + 131, + 244, + 176, + 45, + 181, + 110, + 33, + 33, + 201, + 0, + 71, + 141, + 172, + 132, + 127, + 239, + 128, + 176, + 179, + 234, + 227, + 18, + 17, + 63, + 90, + 65, + 21, + 114, + 20, + 79, + 173, + 240, + 42, + 195, + 111, + 134, + 175, + 54, + 142, + 106, + 245, + 146, + 7, + 205, + 174, + 168, + 100, + 195, + 106, + 124, + 21, + 83, + 165, + 253, + 149, + 55, + 245, + 88, + 51, + 163, + 178, + 26, + 113, + 87, + 37, + 196, + 122, + 169, + 228, + 187, + 243, + 53, + 0, + 102, + 212, + 206, + 198, + 83, + 250, + 196, + 78, + 202, + 142, + 48, + 189, + 71, + 239, + 134, + 250, + 177, + 103, + 134, + 184, + 195, + 147, + 108, + 82, + 69, + 167, + 126, + 42, + 150, + 199, + 96, + 153, + 124, + 148, + 77, + 101, + 54, + 103, + 96, + 238, + 83, + 236, + 156, + 129, + 88, + 128, + 179, + 35, + 245, + 112, + 209, + 91, + 18, + 40, + 5, + 3, + 40, + 36, + 93, + 221, + 121, + 24, + 130, + 103, + 89, + 206, + 95, + 198, + 13, + 168, + 187, + 202, + 95, + 183, + 202, + 163, + 8, + 151, + 250, + 200, + 229, + 203, + 252, + 201, + 99, + 19, + 205, + 163, + 92, + 125, + 248, + 6, + 140, + 112, + 111, + 96, + 44, + 129, + 42, + 168, + 244, + 30, + 227, + 210, + 218, + 209, + 224, + 98, + 248, + 130, + 143, + 185, + 195, + 185, + 0, + 113, + 189, + 173, + 48, + 196, + 22, + 38, + 169, + 185, + 78, + 144, + 161, + 103, + 207, + 207, + 154, + 94, + 184, + 171, + 14, + 14, + 141, + 64, + 206, + 131, + 218, + 171, + 44, + 209, + 152, + 245, + 119, + 198, + 201, + 179, + 43, + 93, + 221, + 228, + 197, + 66, + 64, + 240, + 204, + 112, + 74, + 207, + 171, + 42, + 60, + 154, + 188, + 128, + 51, + 114, + 158, + 237, + 27, + 154, + 20, + 144, + 144, + 36, + 144, + 238, + 77, + 207, + 147, + 216, + 62, + 34, + 97, + 44, + 165, + 130, + 104, + 215, + 61, + 197, + 27, + 56, + 233, + 66, + 106, + 81, + 125, + 50, + 90, + 153, + 98, + 99, + 36, + 70, + 145, + 8, + 55, + 153, + 224, + 45, + 61, + 147, + 46, + 50, + 222, + 113, + 33, + 2, + 49, + 4, + 148, + 45, + 90, + 173, + 110, + 225, + 176, + 71, + 106, + 245, + 208, + 82, + 190, + 156, + 232, + 59, + 240, + 67, + 219, + 80, + 5, + 179, + 190, + 63, + 129, + 199, + 186, + 118, + 167, + 142, + 137, + 103, + 141, + 59, + 47, + 187, + 158, + 169, + 154, + 235, + 88, + 253, + 199, + 187, + 250, + 186, + 75, + 87, + 4, + 15, + 89, + 202, + 22, + 78, + 211, + 163, + 214, + 217, + 58, + 210, + 206, + 181, + 160, + 250, + 150, + 248, + 210, + 48, + 129, + 62, + 201, + 25, + 252, + 210, + 217, + 241, + 205, + 37, + 66, + 197, + 169, + 120, + 115, + 68, + 159, + 189, + 138, + 60, + 136, + 64, + 186, + 55, + 209, + 155, + 150, + 150, + 157, + 217, + 3, + 70, + 248, + 62, + 226, + 233, + 1, + 239, + 45, + 140, + 89, + 96, + 138, + 137, + 147, + 122, + 111, + 81, + 174, + 46, + 82, + 153, + 194, + 98, + 175, + 62, + 216, + 46, + 100, + 113, + 148, + 192, + 225, + 254, + 8, + 123, + 90, + 106, + 109, + 166, + 78, + 240, + 16, + 104, + 28, + 129, + 148, + 66, + 235, + 149, + 248, + 49, + 2, + 171, + 223, + 13, + 68, + 244, + 233, + 175, + 198, + 184, + 210, + 189, + 232, + 183, + 26, + 195, + 104, + 47, + 59, + 80, + 113, + 214, + 173, + 240, + 116, + 163, + 35, + 208, + 173, + 100, + 176, + 25, + 47, + 248, + 182, + 232, + 126, + 112, + 254, + 34, + 50, + 190, + 36, + 205, + 143, + 52, + 151, + 3, + 103, + 162, + 141, + 232, + 167, + 209, + 141, + 54, + 93, + 169, + 62, + 94, + 63, + 144, + 40, + 236, + 43, + 117, + 19, + 113, + 29, + 39, + 177, + 171, + 104, + 4, + 238, + 151, + 220, + 116, + 189, + 156, + 136, + 124, + 70, + 97, + 43, + 127, + 94, + 41, + 175, + 65, + 42, + 122, + 230, + 25, + 123, + 195, + 204, + 180, + 236, + 13, + 185, + 249, + 95, + 245, + 199, + 151, + 212, + 29, + 205, + 38, + 239, + 25, + 198, + 62, + 192, + 90, + 67, + 37, + 229, + 3, + 41, + 251, + 20, + 109, + 22, + 105, + 239, + 12, + 251, + 6, + 7, + 220, + 44, + 176, + 40, + 108, + 30, + 104, + 230, + 226, + 197, + 11, + 77, + 44, + 132, + 0, + 139, + 144, + 14, + 193, + 172, + 17, + 16, + 37, + 18, + 189, + 215, + 103, + 81, + 110, + 69, + 8, + 38, + 17, + 60, + 46, + 240, + 77, + 229, + 251, + 125, + 28, + 26, + 61, + 22, + 167, + 185, + 246, + 94, + 5, + 4, + 57, + 190, + 216, + 92, + 65, + 57, + 95, + 204, + 250, + 225, + 51, + 38, + 126, + 100, + 39, + 35, + 18, + 2, + 219, + 44, + 65, + 59, + 174, + 28, + 167, + 147, + 100, + 125, + 112, + 65, + 223, + 144, + 71, + 174, + 100, + 208, + 107, + 209, + 113, + 49, + 104, + 119, + 246, + 63, + 251, + 7, + 247, + 234, + 123, + 151, + 43, + 105, + 203, + 32, + 134, + 196, + 223, + 193, + 73, + 109, + 90, + 78, + 68, + 114, + 159, + 114, + 186, + 161, + 241, + 7, + 190, + 204, + 236, + 227, + 174, + 217, + 86, + 180, + 224, + 97, + 228, + 182, + 159, + 61, + 145, + 252, + 166, + 249, + 251, + 13, + 56, + 250, + 74, + 231, + 86, + 189, + 143, + 0, + 79, + 98, + 220, + 109, + 189, + 196, + 168, + 216, + 81, + 148, + 99, + 181, + 143, + 126, + 14, + 200, + 140, + 184, + 24, + 100, + 145, + 208, + 93, + 107, + 100, + 141, + 49, + 249, + 202, + 199, + 132, + 141, + 9, + 139, + 251, + 126, + 56, + 235, + 12, + 6, + 200, + 208, + 237, + 179, + 19, + 33, + 35, + 1, + 203, + 129, + 11, + 6, + 52, + 87, + 72, + 216, + 7, + 31, + 246, + 92, + 183, + 251, + 185, + 23, + 124, + 60, + 202, + 26, + 168, + 215, + 9, + 53, + 22, + 172, + 100, + 174, + 211, + 218, + 109, + 8, + 16, + 194, + 105, + 246, + 198, + 113, + 97, + 194, + 129, + 155, + 80, + 125, + 84, + 227, + 55, + 73, + 82, + 72, + 138, + 205, + 231, + 231, + 225, + 88, + 75, + 205, + 87, + 147, + 71, + 244, + 223, + 224, + 108, + 212, + 176, + 80, + 161, + 150, + 89, + 138, + 215, + 88, + 74, + 91, + 164, + 125, + 72, + 215, + 14, + 13, + 25, + 10, + 43, + 83, + 42, + 41, + 229, + 99, + 154, + 161, + 41, + 103, + 7, + 244, + 13, + 56, + 172, + 216, + 89, + 200, + 104, + 123, + 86, + 33, + 225, + 75, + 254, + 8, + 198, + 110, + 196, + 237, + 5, + 70, + 176, + 133, + 198, + 150, + 122, + 227, + 145, + 128, + 133, + 87, + 246, + 211, + 139, + 11, + 48, + 250, + 126, + 135, + 67, + 237, + 74, + 84, + 210, + 172, + 102, + 14, + 6, + 139, + 211, + 92, + 142, + 154, + 94, + 165, + 144, + 111, + 178, + 65, + 145, + 222, + 250, + 88, + 118, + 9, + 100, + 10, + 165, + 56, + 238, + 150, + 250, + 212, + 18, + 64, + 21, + 129, + 246, + 16, + 212, + 131, + 233, + 21, + 235, + 122, + 63, + 57, + 102, + 71, + 85, + 230, + 184, + 10, + 100, + 171, + 83, + 62, + 27, + 123, + 169, + 245, + 253, + 153, + 226, + 79, + 218, + 129, + 236, + 67, + 60, + 126, + 225, + 110, + 105, + 31, + 21, + 93, + 79, + 60, + 238, + 209, + 167, + 5, + 227, + 217, + 15, + 227, + 18, + 51, + 149, + 73, + 235, + 32, + 101, + 164, + 122, + 51, + 103, + 172, + 82, + 121, + 216, + 54, + 228, + 245, + 159, + 34, + 200, + 177, + 133, + 64, + 194, + 76, + 82, + 16, + 71, + 17, + 66, + 225, + 74, + 136, + 88, + 169, + 83, + 77, + 44, + 152, + 117, + 208, + 129, + 98, + 104, + 87, + 199, + 185, + 62, + 204, + 81, + 250, + 236, + 72, + 85, + 171, + 202, + 158, + 43, + 77, + 156, + 100, + 223, + 233, + 96, + 142, + 101, + 116, + 154, + 171, + 150, + 202, + 108, + 64, + 37, + 29, + 243, + 32, + 95, + 197, + 75, + 149, + 186, + 67, + 214, + 72, + 108, + 239, + 169, + 36, + 131, + 151, + 17, + 41, + 8, + 221, + 229, + 203, + 157, + 149, + 170, + 102, + 78, + 82, + 80, + 237, + 62, + 161, + 66, + 166, + 253, + 109, + 19, + 246, + 196, + 251, + 244, + 32, + 200, + 161, + 122, + 42, + 194, + 11, + 144, + 25, + 36, + 90, + 227, + 32, + 105, + 107, + 31, + 2, + 171, + 181, + 94, + 14, + 191, + 232, + 180, + 160, + 142, + 86, + 249, + 187, + 19, + 254, + 115, + 36, + 32, + 236, + 52, + 124, + 113, + 70, + 213, + 146, + 70, + 121, + 147, + 105, + 241, + 204, + 206, + 29, + 3, + 54, + 255, + 228, + 159, + 243, + 135, + 87, + 66, + 168, + 116, + 121, + 226, + 77, + 216, + 145, + 96, + 147, + 191, + 41, + 48, + 235, + 209, + 34, + 95, + 156, + 49, + 228, + 158, + 109, + 129, + 198, + 63, + 174, + 48, + 44, + 197, + 34, + 152, + 119, + 101, + 206, + 65, + 149, + 179, + 168, + 214, + 118, + 193, + 165, + 34, + 165, + 191, + 97, + 97, + 24, + 188, + 58, + 172, + 34, + 26, + 150, + 215, + 82, + 210, + 63, + 80, + 220, + 225, + 185, + 227, + 160, + 62, + 5, + 244, + 188, + 113, + 253, + 213, + 226, + 214, + 8, + 230, + 147, + 71, + 33, + 103, + 70, + 255, + 35, + 237, + 254, + 227, + 144, + 54, + 144, + 41, + 242, + 183, + 171, + 253, + 184, + 201, + 70, + 18, + 96, + 95, + 135, + 84, + 244, + 60, + 87, + 9, + 185, + 131, + 96, + 39, + 161, + 121, + 81, + 109, + 22, + 130, + 182, + 174, + 98, + 31, + 5, + 250, + 127, + 155, + 176, + 167, + 102, + 154, + 154, + 9, + 17, + 202, + 207, + 101, + 78, + 85, + 151, + 201, + 139, + 13, + 129, + 98, + 201, + 64, + 241, + 54, + 73, + 65, + 175, + 145, + 20, + 183, + 83, + 206, + 188, + 235, + 91, + 20, + 168, + 44, + 223, + 32, + 21, + 186, + 204, + 223, + 182, + 114, + 134, + 149, + 198, + 0, + 75, + 84, + 126, + 230, + 172, + 157, + 242, + 211, + 240, + 6, + 72, + 178, + 7, + 242, + 159, + 248, + 144, + 235, + 35, + 92, + 189, + 106, + 145, + 116, + 87, + 250, + 236, + 240, + 52, + 217, + 3, + 43, + 253, + 27, + 153, + 99, + 106, + 157, + 30, + 234, + 6, + 94, + 193, + 197, + 208, + 23, + 11, + 190, + 254, + 80, + 113, + 117, + 96, + 155, + 131, + 90, + 35, + 207, + 137, + 122, + 113, + 232, + 11, + 137, + 22, + 14, + 246, + 84, + 129, + 130, + 128, + 51, + 87, + 61, + 29, + 163, + 247, + 113, + 167, + 90, + 162, + 115, + 187, + 146, + 137, + 60, + 193, + 170, + 94, + 198, + 131, + 110, + 62, + 166, + 227, + 231, + 26, + 105, + 130, + 100, + 178, + 71, + 121, + 41, + 100, + 230, + 159, + 26, + 49, + 42, + 193, + 99, + 81, + 7, + 99, + 64, + 163, + 226, + 154, + 137, + 164, + 88, + 160, + 99, + 33, + 198, + 214, + 50, + 123, + 93, + 150, + 65, + 212, + 194, + 229, + 215, + 192, + 242, + 245, + 152, + 195, + 233, + 191, + 234, + 48, + 208, + 90, + 228, + 235, + 181, + 145, + 36, + 34, + 225, + 69, + 65, + 214, + 111, + 25, + 250, + 20, + 97, + 175, + 120, + 45, + 41, + 139, + 230, + 0, + 177, + 63, + 164, + 78, + 55, + 7, + 185, + 255, + 84, + 32, + 221, + 111, + 163, + 11, + 248, + 214, + 42, + 254, + 77, + 147, + 150, + 168, + 109, + 202, + 20, + 176, + 97, + 73, + 219, + 175, + 147, + 25, + 253, + 5, + 7, + 19, + 3, + 107, + 129, + 147, + 84, + 249, + 238, + 79, + 216, + 188, + 171, + 227, + 177, + 17, + 99, + 220, + 22, + 184, + 123, + 69, + 68, + 54, + 117, + 45, + 47, + 104, + 2, + 253, + 158, + 140, + 89, + 0, + 67, + 128, + 173, + 76, + 41, + 69, + 199, + 17, + 124, + 254, + 236, + 59, + 194, + 75, + 15, + 55, + 69, + 128, + 196, + 68, + 103, + 236, + 79, + 104, + 146, + 20, + 10, + 15, + 2, + 162, + 59, + 187, + 134, + 122, + 167, + 133, + 63, + 191, + 119, + 160, + 168, + 193, + 244, + 162, + 174, + 190, + 249, + 152, + 209, + 252, + 199, + 192, + 36, + 220, + 0, + 204, + 212, + 164, + 20, + 160, + 124, + 124, + 137, + 143, + 193, + 201, + 170, + 237, + 249, + 38, + 141, + 114, + 249, + 137, + 189, + 35, + 173, + 98, + 204, + 163, + 132, + 5, + 129, + 187, + 121, + 221, + 153, + 119, + 68, + 143, + 53, + 194, + 74, + 125, + 0, + 22, + 38, + 34, + 82, + 232, + 125, + 68, + 200, + 110, + 24, + 136, + 209, + 138, + 210, + 138, + 57, + 202, + 114, + 169, + 67, + 42, + 177, + 93, + 205, + 28, + 251, + 58, + 107, + 79, + 186, + 220, + 235, + 230, + 180, + 89, + 83, + 228, + 105, + 38, + 226, + 254, + 21, + 146, + 5, + 96, + 50, + 1, + 163, + 235, + 198, + 251, + 222, + 102, + 60, + 183, + 178, + 85, + 43, + 110, + 111, + 32, + 189, + 148, + 166, + 37, + 250, + 13, + 196, + 148, + 161, + 114, + 21, + 67, + 93, + 172, + 80, + 178, + 181, + 62, + 18, + 72, + 107, + 109, + 61, + 70, + 147, + 248, + 18, + 49, + 244, + 146, + 201, + 159, + 90, + 181, + 56, + 0, + 106, + 139, + 205, + 247, + 152, + 252, + 168, + 149, + 242, + 216, + 102, + 83, + 168, + 243, + 71, + 150, + 45, + 201, + 104, + 123, + 214, + 93, + 220, + 84, + 30, + 6, + 222, + 50, + 176, + 77, + 160, + 248, + 77, + 66, + 200, + 208, + 107, + 241, + 130, + 168, + 123, + 182, + 103, + 235, + 144, + 66, + 254, + 225, + 182, + 13, + 140, + 146, + 172, + 182, + 76, + 111, + 226, + 59, + 185, + 106, + 207, + 123, + 97, + 23, + 241, + 130, + 138, + 139, + 76, + 250, + 101, + 48, + 123, + 247, + 5, + 141, + 193, + 44, + 33, + 125, + 97, + 31, + 54, + 79, + 169, + 132, + 95, + 245, + 180, + 197, + 174, + 89, + 25, + 162, + 154, + 118, + 183, + 10, + 210, + 153, + 234, + 9, + 61, + 3, + 193, + 123, + 206, + 95, + 239, + 47, + 170, + 250, + 200, + 45, + 10, + 59, + 199, + 127, + 139, + 109, + 94, + 240, + 38, + 247, + 63, + 180, + 27, + 238, + 194, + 150, + 17, + 170, + 121, + 165, + 89, + 223, + 64, + 79, + 46, + 181, + 155, + 24, + 168, + 241, + 8, + 30, + 161, + 32, + 125, + 144, + 115, + 96, + 179, + 0, + 124, + 111, + 149, + 24, + 126, + 34, + 76, + 224, + 79, + 165, + 104, + 48, + 29, + 254, + 68, + 228, + 8, + 58, + 106, + 220, + 158, + 65, + 240, + 6, + 109, + 100, + 134, + 6, + 239, + 239, + 119, + 126, + 55, + 157, + 227, + 138, + 114, + 5, + 110, + 32, + 255, + 223, + 217, + 0, + 203, + 56, + 230, + 229, + 12, + 199, + 62, + 76, + 191, + 231, + 240, + 63, + 27, + 209, + 137, + 225, + 226, + 30, + 44, + 202, + 57, + 165, + 162, + 158, + 11, + 78, + 36, + 9, + 192, + 189, + 168, + 140, + 253, + 254, + 76, + 27, + 131, + 18, + 220, + 117, + 128, + 161, + 137, + 116, + 148, + 164, + 133, + 41, + 83, + 108, + 219, + 117, + 39, + 68, + 135, + 231, + 188, + 36, + 36, + 57, + 45, + 156, + 236, + 77, + 94, + 53, + 172, + 135, + 159, + 145, + 68, + 221, + 163, + 241, + 34, + 82, + 40, + 211, + 137, + 123, + 251, + 133, + 203, + 73, + 58, + 191, + 121, + 51, + 191, + 150, + 177, + 132, + 160, + 243, + 14, + 31, + 41, + 185, + 235, + 92, + 56, + 174, + 252, + 62, + 92, + 164, + 47, + 111, + 68, + 155, + 109, + 31, + 136, + 21, + 179, + 37, + 173, + 224, + 90, + 189, + 60, + 168, + 100, + 106, + 50, + 28, + 192, + 211, + 136, + 90, + 179, + 227, + 146, + 182, + 62, + 116, + 73, + 208, + 49, + 109, + 206, + 7, + 51, + 128, + 34, + 131, + 157, + 12, + 7, + 141, + 125, + 29, + 124, + 233, + 6, + 215, + 7, + 214, + 235, + 161, + 147, + 166, + 127, + 119, + 144, + 150, + 150, + 225, + 137, + 148, + 155, + 25, + 3, + 235, + 95, + 198, + 232, + 194, + 124, + 54, + 134, + 49, + 176, + 147, + 64, + 75, + 243, + 22, + 108, + 214, + 136, + 106, + 126, + 213, + 88, + 121, + 236, + 158, + 19, + 27, + 71, + 176, + 0, + 87, + 194, + 165, + 35, + 21, + 145, + 9, + 173, + 66, + 175, + 73, + 8, + 211, + 164, + 199, + 61, + 231, + 11, + 142, + 177, + 113, + 222, + 47, + 11, + 150, + 209, + 222, + 238, + 191, + 24, + 86, + 11, + 90, + 72, + 139, + 28, + 41, + 131, + 117, + 39, + 115, + 87, + 116, + 246, + 26, + 218, + 243, + 160, + 32, + 27, + 160, + 31, + 222, + 174, + 6, + 231, + 200, + 172, + 10, + 212, + 236, + 3, + 121, + 206, + 245, + 233, + 202, + 32, + 250, + 128, + 248, + 30, + 222, + 231, + 168, + 69, + 207, + 177, + 121, + 249, + 71, + 37, + 199, + 215, + 208, + 99, + 59, + 189, + 82, + 86, + 1, + 57, + 246, + 98, + 236, + 82, + 4, + 67, + 117, + 92, + 236, + 127, + 52, + 138, + 127, + 126, + 20, + 226, + 204, + 30, + 117, + 115, + 0, + 163, + 250, + 110, + 137, + 44, + 225, + 199, + 178, + 25, + 32, + 93, + 131, + 203, + 252, + 209, + 74, + 246, + 32, + 226, + 117, + 102, + 138, + 243, + 136, + 165, + 238, + 210, + 138, + 246, + 241, + 226, + 144, + 130, + 212, + 46, + 49, + 0, + 141, + 179, + 85, + 218, + 76, + 242, + 95, + 175, + 32, + 173, + 13, + 233, + 241, + 114, + 87, + 84, + 189, + 54, + 38, + 213, + 216, + 170, + 47, + 96, + 192, + 156, + 241, + 241, + 140, + 178, + 39, + 71, + 177, + 62, + 175, + 177, + 11, + 29, + 52, + 230, + 70, + 248, + 208, + 110, + 32, + 61, + 7, + 181, + 8, + 151, + 141, + 111, + 146, + 211, + 36, + 14, + 148, + 38, + 155, + 128, + 122, + 207, + 192, + 31, + 232, + 149, + 29, + 172, + 181, + 240, + 205, + 238, + 138, + 144, + 163, + 7, + 195, + 152, + 4, + 228, + 232, + 17, + 252, + 244, + 2, + 106, + 201, + 75, + 150, + 72, + 40, + 25, + 133, + 49, + 247, + 113, + 103, + 194, + 236, + 112, + 172, + 22, + 166, + 168, + 243, + 23, + 73, + 48, + 244, + 239, + 225, + 97, + 4, + 56, + 87, + 133, + 182, + 1, + 241, + 222, + 248, + 5, + 16, + 113, + 165, + 156, + 118, + 223, + 74, + 240, + 141, + 45, + 70, + 52, + 250, + 175, + 127, + 81, + 74, + 31, + 180, + 37, + 195, + 159, + 3, + 66, + 3, + 38, + 26, + 198, + 66, + 74, + 175, + 4, + 78, + 132, + 194, + 166, + 41, + 7, + 24, + 56, + 141, + 239, + 154, + 115, + 173, + 175, + 133, + 87, + 134, + 25, + 250, + 179, + 1, + 188, + 241, + 165, + 116, + 169, + 41, + 203, + 137, + 110, + 17, + 249, + 123, + 68, + 137, + 165, + 42, + 169, + 226, + 85, + 236, + 146, + 85, + 94, + 175, + 227, + 98, + 41, + 193, + 119, + 15, + 79, + 162, + 138, + 180, + 100, + 169, + 216, + 140, + 145, + 178, + 73, + 132, + 106, + 41, + 162, + 99, + 238, + 8, + 194, + 206, + 28, + 210, + 5, + 161, + 101, + 123, + 68, + 246, + 112, + 47, + 174, + 61, + 242, + 65, + 161, + 255, + 90, + 84, + 203, + 109, + 117, + 61, + 203, + 170, + 155, + 52, + 62, + 61, + 242, + 173, + 104, + 179, + 108, + 51, + 0, + 109, + 212, + 123, + 172, + 165, + 43, + 95, + 187, + 145, + 175, + 198, + 145, + 216, + 167, + 69, + 59, + 197, + 171, + 41, + 85, + 123, + 212, + 174, + 111, + 88, + 169, + 240, + 190, + 197, + 224, + 133, + 222, + 8, + 112, + 199, + 92, + 187, + 89, + 254, + 197, + 190, + 173, + 4, + 158, + 197, + 82, + 54, + 163, + 180, + 230, + 209, + 49, + 202, + 37, + 23, + 67, + 191, + 88, + 150, + 102, + 49, + 0, + 137, + 66, + 9, + 170, + 118, + 187, + 212, + 12, + 227, + 121, + 245, + 89, + 228, + 164, + 69, + 154, + 4, + 249, + 74, + 248, + 199, + 47, + 231, + 190, + 30, + 61, + 219, + 138, + 137, + 97, + 59, + 33, + 91, + 191, + 52, + 174, + 64, + 123, + 122, + 100, + 248, + 9, + 73, + 69, + 216, + 132, + 51, + 206, + 151, + 114, + 32, + 71, + 80, + 255, + 198, + 49, + 80, + 42, + 227, + 75, + 30, + 146, + 239, + 13, + 88, + 118, + 27, + 143, + 206, + 171, + 42, + 54, + 63, + 34, + 127, + 191, + 85, + 181, + 65, + 161, + 115, + 41, + 50, + 40, + 30, + 173, + 219, + 122, + 243, + 21, + 193, + 179, + 249, + 180, + 88, + 6, + 1, + 92, + 186, + 43, + 144, + 230, + 98, + 99, + 11, + 101, + 195, + 101, + 178, + 47, + 187, + 139, + 235, + 78, + 159, + 75, + 109, + 143, + 96, + 87, + 78, + 178, + 164, + 7, + 162, + 207, + 165, + 91, + 166, + 137, + 66, + 223, + 65, + 118, + 188, + 71, + 68, + 134, + 111, + 39, + 252, + 151, + 7, + 230, + 219, + 76, + 82, + 209, + 11, + 57, + 43, + 25, + 162, + 12, + 157, + 94, + 6, + 121, + 199, + 119, + 75, + 13, + 55, + 102, + 254, + 111, + 211, + 33, + 163, + 100, + 204, + 21, + 242, + 124, + 162, + 253, + 172, + 101, + 216, + 6, + 62, + 140, + 165, + 107, + 62, + 31, + 230, + 53, + 72, + 175, + 243, + 128, + 190, + 34, + 198, + 130, + 193, + 141, + 143, + 39, + 22, + 79, + 199, + 254, + 10, + 167, + 169, + 246, + 109, + 1, + 157, + 29, + 71, + 53, + 89, + 190, + 32, + 198, + 107, + 8, + 198, + 84, + 97, + 191, + 132, + 75, + 16, + 161, + 64, + 64, + 132, + 28, + 31, + 214, + 158, + 58, + 88, + 115, + 17, + 226, + 161, + 14, + 11, + 251, + 50, + 238, + 154, + 50, + 236, + 231, + 163, + 52, + 246, + 128, + 60, + 200, + 42, + 34, + 25, + 118, + 92, + 187, + 19, + 158, + 130, + 110, + 34, + 49, + 43, + 190, + 204, + 144, + 56, + 116, + 62, + 20, + 12, + 198, + 116, + 164, + 69, + 26, + 193, + 211, + 235, + 132, + 128, + 150, + 199, + 67, + 28, + 40, + 108, + 108, + 92, + 71, + 196, + 30, + 2, + 158, + 65, + 243, + 153, + 67, + 101, + 172, + 225, + 36, + 242, + 212, + 30, + 56, + 71, + 214, + 220, + 217, + 139, + 102, + 166, + 13, + 170, + 40, + 35, + 18, + 176, + 179, + 121, + 182, + 247, + 56, + 205, + 32, + 8, + 171, + 72, + 32, + 123 + ], + "kyber_ciphertext": [], + "kyber_public_key": [], + "argon2_salt": [ + 11, + 224, + 201, + 114, + 171, + 182, + 143, + 198, + 55, + 161, + 194, + 68, + 213, + 187, + 192, + 2 + ], + "argon2_params": "$argon2id$v=19$m=19456,t=2,p=1$C+DJcqu2j8Y3ocJE1bvAAg", + "aes_nonce": [ + 16, + 82, + 4, + 80, + 188, + 242, + 136, + 111, + 22, + 92, + 144, + 253 + ], + "encryption_version": 2, + "created_at": "2026-09-15T19:24:37.489344156Z" +} \ No newline at end of file diff --git a/crates/wallet-data/tests/fixtures/cli-wallets/crystal_bob.json b/crates/wallet-data/tests/fixtures/cli-wallets/crystal_bob.json new file mode 100644 index 0000000..c6770c7 --- /dev/null +++ b/crates/wallet-data/tests/fixtures/cli-wallets/crystal_bob.json @@ -0,0 +1,26553 @@ +{ + "name": "crystal_bob", + "address": "qzkYEQv8tQsmniZYdame3Cku18RL5g9bGK9Pdydq5TMPdpE3y", + "wallet_type": "hot", + "encrypted_data": [ + 243, + 214, + 151, + 185, + 208, + 213, + 161, + 26, + 176, + 123, + 110, + 253, + 42, + 72, + 153, + 186, + 73, + 191, + 30, + 73, + 203, + 31, + 190, + 94, + 167, + 22, + 114, + 232, + 15, + 216, + 10, + 239, + 0, + 111, + 161, + 36, + 220, + 249, + 1, + 33, + 244, + 213, + 127, + 227, + 51, + 42, + 65, + 227, + 105, + 168, + 180, + 157, + 255, + 180, + 128, + 126, + 103, + 44, + 110, + 210, + 219, + 217, + 244, + 217, + 239, + 223, + 174, + 53, + 21, + 52, + 111, + 123, + 210, + 61, + 21, + 94, + 212, + 84, + 114, + 225, + 240, + 127, + 115, + 151, + 250, + 117, + 44, + 61, + 91, + 78, + 117, + 133, + 151, + 32, + 47, + 185, + 167, + 197, + 60, + 148, + 78, + 9, + 33, + 151, + 178, + 217, + 163, + 162, + 161, + 117, + 158, + 152, + 106, + 143, + 205, + 205, + 204, + 28, + 175, + 144, + 74, + 77, + 177, + 132, + 29, + 113, + 174, + 6, + 214, + 165, + 162, + 123, + 50, + 181, + 86, + 113, + 67, + 253, + 243, + 156, + 211, + 105, + 205, + 241, + 251, + 162, + 242, + 255, + 136, + 174, + 65, + 14, + 144, + 26, + 253, + 147, + 241, + 120, + 255, + 215, + 253, + 223, + 24, + 137, + 100, + 79, + 11, + 207, + 63, + 163, + 219, + 204, + 251, + 57, + 20, + 0, + 73, + 183, + 23, + 20, + 97, + 108, + 149, + 48, + 211, + 213, + 116, + 34, + 216, + 138, + 254, + 100, + 56, + 17, + 61, + 241, + 177, + 105, + 102, + 134, + 25, + 218, + 122, + 140, + 139, + 159, + 167, + 154, + 17, + 59, + 68, + 151, + 10, + 28, + 109, + 115, + 250, + 242, + 173, + 80, + 161, + 200, + 72, + 99, + 72, + 163, + 29, + 237, + 11, + 148, + 183, + 217, + 234, + 106, + 126, + 222, + 102, + 106, + 73, + 225, + 53, + 238, + 63, + 75, + 124, + 139, + 215, + 131, + 44, + 50, + 199, + 139, + 174, + 67, + 22, + 173, + 89, + 153, + 139, + 103, + 131, + 115, + 232, + 95, + 175, + 195, + 106, + 44, + 200, + 209, + 71, + 197, + 176, + 180, + 169, + 125, + 181, + 208, + 15, + 137, + 16, + 36, + 247, + 75, + 36, + 123, + 232, + 229, + 76, + 175, + 218, + 0, + 219, + 141, + 67, + 254, + 95, + 77, + 176, + 84, + 63, + 217, + 152, + 168, + 161, + 226, + 47, + 80, + 232, + 53, + 208, + 191, + 229, + 195, + 70, + 239, + 116, + 185, + 155, + 133, + 224, + 102, + 92, + 6, + 96, + 180, + 91, + 15, + 194, + 59, + 239, + 117, + 255, + 246, + 216, + 216, + 22, + 243, + 224, + 225, + 76, + 1, + 173, + 43, + 250, + 82, + 189, + 139, + 104, + 129, + 54, + 211, + 190, + 93, + 239, + 162, + 185, + 227, + 247, + 183, + 1, + 98, + 34, + 125, + 128, + 190, + 125, + 177, + 164, + 26, + 35, + 102, + 78, + 4, + 83, + 135, + 5, + 241, + 203, + 157, + 23, + 112, + 112, + 219, + 99, + 101, + 150, + 188, + 134, + 66, + 147, + 216, + 205, + 180, + 84, + 203, + 230, + 44, + 9, + 212, + 215, + 133, + 226, + 239, + 190, + 222, + 64, + 227, + 210, + 196, + 87, + 103, + 161, + 172, + 31, + 219, + 166, + 171, + 12, + 41, + 108, + 231, + 63, + 136, + 254, + 0, + 49, + 84, + 43, + 166, + 78, + 117, + 192, + 160, + 160, + 211, + 72, + 43, + 7, + 157, + 124, + 62, + 0, + 236, + 210, + 66, + 107, + 169, + 209, + 240, + 221, + 37, + 188, + 109, + 33, + 251, + 54, + 195, + 207, + 152, + 105, + 228, + 100, + 62, + 193, + 216, + 223, + 151, + 80, + 175, + 118, + 204, + 193, + 151, + 100, + 11, + 205, + 45, + 193, + 97, + 161, + 130, + 199, + 238, + 210, + 30, + 69, + 132, + 28, + 185, + 100, + 192, + 221, + 0, + 148, + 108, + 204, + 224, + 125, + 253, + 91, + 216, + 217, + 166, + 75, + 163, + 221, + 113, + 57, + 232, + 160, + 181, + 161, + 147, + 41, + 1, + 74, + 198, + 120, + 216, + 29, + 178, + 110, + 183, + 174, + 238, + 155, + 20, + 147, + 37, + 245, + 74, + 167, + 93, + 198, + 139, + 177, + 22, + 209, + 123, + 53, + 17, + 175, + 251, + 29, + 231, + 225, + 89, + 217, + 100, + 190, + 62, + 197, + 120, + 33, + 180, + 133, + 137, + 171, + 199, + 95, + 77, + 63, + 143, + 157, + 234, + 136, + 93, + 94, + 177, + 88, + 201, + 54, + 7, + 103, + 231, + 153, + 246, + 243, + 227, + 115, + 85, + 115, + 150, + 166, + 107, + 193, + 183, + 96, + 47, + 60, + 151, + 101, + 163, + 124, + 155, + 220, + 148, + 243, + 8, + 237, + 211, + 51, + 88, + 5, + 241, + 229, + 156, + 71, + 252, + 125, + 117, + 43, + 35, + 255, + 142, + 102, + 42, + 250, + 103, + 181, + 73, + 243, + 78, + 92, + 135, + 146, + 170, + 76, + 44, + 123, + 170, + 249, + 73, + 58, + 97, + 232, + 121, + 11, + 25, + 56, + 140, + 119, + 79, + 6, + 149, + 79, + 142, + 109, + 32, + 73, + 29, + 229, + 85, + 78, + 84, + 218, + 234, + 50, + 50, + 35, + 29, + 144, + 102, + 193, + 134, + 193, + 196, + 103, + 93, + 234, + 40, + 183, + 78, + 89, + 241, + 217, + 233, + 84, + 185, + 119, + 101, + 32, + 123, + 206, + 175, + 27, + 68, + 240, + 55, + 173, + 132, + 22, + 34, + 255, + 186, + 82, + 5, + 179, + 141, + 233, + 43, + 179, + 56, + 50, + 106, + 174, + 154, + 112, + 89, + 28, + 18, + 133, + 244, + 5, + 28, + 215, + 48, + 124, + 88, + 241, + 227, + 237, + 154, + 216, + 117, + 141, + 17, + 93, + 85, + 69, + 65, + 100, + 202, + 234, + 60, + 148, + 114, + 58, + 170, + 220, + 195, + 149, + 151, + 10, + 110, + 188, + 49, + 165, + 43, + 251, + 77, + 213, + 252, + 208, + 240, + 213, + 18, + 77, + 18, + 140, + 144, + 129, + 71, + 71, + 106, + 236, + 18, + 145, + 147, + 146, + 244, + 147, + 146, + 231, + 121, + 2, + 67, + 45, + 119, + 1, + 7, + 68, + 250, + 144, + 173, + 43, + 143, + 36, + 151, + 105, + 150, + 151, + 222, + 148, + 100, + 144, + 240, + 81, + 228, + 3, + 145, + 227, + 243, + 239, + 50, + 72, + 35, + 211, + 250, + 228, + 219, + 38, + 217, + 226, + 52, + 36, + 229, + 228, + 185, + 234, + 92, + 97, + 236, + 216, + 208, + 250, + 122, + 103, + 41, + 181, + 24, + 251, + 29, + 206, + 98, + 160, + 131, + 115, + 189, + 26, + 26, + 46, + 238, + 73, + 141, + 169, + 67, + 188, + 74, + 98, + 71, + 150, + 176, + 183, + 131, + 158, + 224, + 45, + 59, + 176, + 95, + 110, + 179, + 85, + 179, + 5, + 78, + 84, + 230, + 35, + 190, + 68, + 104, + 86, + 120, + 75, + 202, + 13, + 48, + 124, + 61, + 119, + 54, + 140, + 4, + 25, + 33, + 61, + 224, + 45, + 177, + 232, + 19, + 111, + 109, + 73, + 130, + 249, + 76, + 124, + 116, + 88, + 227, + 194, + 46, + 15, + 139, + 93, + 54, + 102, + 5, + 185, + 162, + 235, + 176, + 84, + 146, + 172, + 90, + 201, + 88, + 37, + 199, + 164, + 109, + 56, + 94, + 115, + 109, + 1, + 246, + 56, + 152, + 232, + 174, + 121, + 219, + 165, + 83, + 92, + 147, + 35, + 81, + 71, + 202, + 124, + 181, + 4, + 126, + 147, + 168, + 127, + 86, + 79, + 231, + 146, + 94, + 191, + 164, + 249, + 49, + 63, + 48, + 72, + 170, + 190, + 31, + 154, + 125, + 79, + 39, + 84, + 138, + 178, + 44, + 243, + 95, + 187, + 199, + 206, + 56, + 98, + 102, + 241, + 114, + 167, + 144, + 52, + 1, + 150, + 152, + 81, + 97, + 102, + 195, + 50, + 191, + 53, + 95, + 63, + 198, + 156, + 102, + 214, + 126, + 129, + 119, + 122, + 224, + 137, + 241, + 0, + 6, + 60, + 157, + 255, + 7, + 157, + 92, + 60, + 151, + 240, + 151, + 31, + 204, + 0, + 134, + 54, + 239, + 29, + 187, + 7, + 130, + 254, + 252, + 78, + 13, + 106, + 23, + 170, + 7, + 254, + 68, + 46, + 243, + 109, + 57, + 158, + 53, + 194, + 133, + 5, + 26, + 68, + 8, + 160, + 11, + 194, + 56, + 115, + 166, + 92, + 214, + 71, + 194, + 162, + 136, + 130, + 60, + 196, + 47, + 53, + 64, + 130, + 173, + 197, + 233, + 175, + 233, + 123, + 150, + 76, + 117, + 40, + 241, + 147, + 134, + 106, + 206, + 189, + 54, + 158, + 180, + 14, + 234, + 253, + 152, + 212, + 63, + 171, + 69, + 109, + 62, + 1, + 49, + 76, + 83, + 75, + 11, + 158, + 5, + 236, + 18, + 91, + 38, + 55, + 184, + 162, + 162, + 176, + 203, + 251, + 140, + 222, + 208, + 183, + 94, + 214, + 185, + 91, + 241, + 218, + 148, + 173, + 229, + 114, + 200, + 81, + 236, + 110, + 147, + 190, + 238, + 148, + 39, + 141, + 159, + 118, + 74, + 66, + 240, + 111, + 73, + 233, + 231, + 169, + 239, + 230, + 240, + 38, + 84, + 234, + 255, + 251, + 170, + 7, + 72, + 178, + 186, + 18, + 221, + 170, + 9, + 67, + 76, + 168, + 16, + 189, + 207, + 45, + 45, + 249, + 221, + 1, + 30, + 2, + 228, + 174, + 197, + 119, + 236, + 193, + 122, + 109, + 124, + 118, + 26, + 113, + 59, + 113, + 12, + 223, + 212, + 240, + 93, + 70, + 68, + 29, + 191, + 135, + 194, + 47, + 65, + 224, + 102, + 123, + 109, + 174, + 114, + 72, + 122, + 22, + 177, + 232, + 165, + 131, + 226, + 212, + 148, + 61, + 171, + 61, + 165, + 230, + 146, + 98, + 27, + 223, + 47, + 237, + 238, + 74, + 135, + 178, + 106, + 57, + 219, + 210, + 76, + 210, + 115, + 116, + 93, + 200, + 109, + 216, + 94, + 229, + 120, + 4, + 251, + 111, + 70, + 241, + 228, + 159, + 100, + 142, + 248, + 202, + 151, + 113, + 169, + 246, + 154, + 14, + 214, + 191, + 238, + 34, + 106, + 125, + 152, + 96, + 155, + 165, + 199, + 104, + 208, + 98, + 134, + 13, + 25, + 53, + 5, + 183, + 20, + 137, + 234, + 198, + 239, + 230, + 34, + 195, + 81, + 71, + 245, + 98, + 196, + 91, + 126, + 200, + 212, + 15, + 172, + 232, + 38, + 237, + 47, + 57, + 25, + 110, + 17, + 172, + 39, + 166, + 235, + 200, + 133, + 58, + 101, + 129, + 87, + 214, + 48, + 68, + 254, + 106, + 241, + 104, + 24, + 130, + 177, + 214, + 185, + 122, + 216, + 30, + 164, + 212, + 15, + 129, + 148, + 168, + 10, + 39, + 78, + 37, + 60, + 118, + 26, + 136, + 57, + 237, + 248, + 37, + 156, + 41, + 220, + 13, + 39, + 110, + 25, + 111, + 175, + 242, + 201, + 76, + 100, + 200, + 235, + 31, + 157, + 142, + 11, + 122, + 203, + 40, + 234, + 126, + 43, + 250, + 218, + 6, + 90, + 22, + 105, + 108, + 209, + 209, + 108, + 118, + 207, + 84, + 249, + 12, + 16, + 157, + 93, + 51, + 115, + 67, + 88, + 126, + 40, + 117, + 182, + 180, + 205, + 47, + 113, + 245, + 52, + 15, + 123, + 18, + 10, + 212, + 157, + 173, + 38, + 39, + 117, + 29, + 170, + 151, + 133, + 47, + 186, + 237, + 254, + 107, + 90, + 177, + 145, + 237, + 141, + 189, + 51, + 79, + 240, + 219, + 228, + 12, + 176, + 188, + 109, + 195, + 115, + 56, + 71, + 164, + 105, + 173, + 125, + 191, + 107, + 79, + 159, + 204, + 39, + 22, + 151, + 166, + 101, + 199, + 115, + 39, + 43, + 130, + 254, + 100, + 156, + 125, + 218, + 230, + 244, + 196, + 106, + 229, + 224, + 110, + 9, + 25, + 80, + 37, + 234, + 92, + 203, + 114, + 118, + 169, + 13, + 114, + 22, + 158, + 127, + 194, + 152, + 100, + 217, + 15, + 99, + 125, + 217, + 69, + 100, + 236, + 112, + 246, + 167, + 78, + 105, + 206, + 100, + 62, + 158, + 32, + 74, + 227, + 5, + 194, + 139, + 38, + 41, + 186, + 155, + 209, + 30, + 67, + 125, + 161, + 245, + 174, + 65, + 144, + 19, + 90, + 59, + 13, + 93, + 46, + 192, + 234, + 34, + 80, + 169, + 135, + 92, + 37, + 148, + 179, + 132, + 119, + 220, + 217, + 127, + 215, + 40, + 124, + 127, + 2, + 205, + 92, + 21, + 180, + 200, + 138, + 97, + 181, + 235, + 104, + 49, + 222, + 96, + 30, + 222, + 112, + 188, + 108, + 116, + 177, + 215, + 80, + 137, + 146, + 75, + 164, + 62, + 153, + 165, + 227, + 111, + 104, + 245, + 50, + 13, + 251, + 236, + 144, + 154, + 2, + 150, + 37, + 56, + 188, + 204, + 63, + 72, + 107, + 49, + 106, + 247, + 170, + 250, + 102, + 9, + 9, + 147, + 112, + 128, + 49, + 156, + 222, + 1, + 208, + 87, + 122, + 107, + 212, + 36, + 38, + 115, + 244, + 197, + 65, + 124, + 165, + 166, + 66, + 77, + 119, + 238, + 87, + 152, + 46, + 172, + 57, + 111, + 219, + 133, + 178, + 66, + 96, + 23, + 44, + 22, + 120, + 237, + 39, + 157, + 243, + 214, + 238, + 233, + 7, + 33, + 81, + 107, + 53, + 222, + 137, + 199, + 165, + 246, + 135, + 190, + 248, + 36, + 107, + 31, + 74, + 239, + 245, + 140, + 178, + 168, + 204, + 154, + 113, + 62, + 227, + 242, + 15, + 48, + 58, + 168, + 231, + 69, + 89, + 189, + 159, + 169, + 120, + 168, + 204, + 22, + 125, + 66, + 87, + 190, + 15, + 126, + 223, + 202, + 171, + 143, + 59, + 63, + 210, + 11, + 179, + 229, + 12, + 177, + 91, + 98, + 11, + 69, + 26, + 196, + 152, + 144, + 176, + 251, + 210, + 67, + 234, + 223, + 170, + 111, + 233, + 231, + 116, + 115, + 227, + 180, + 176, + 161, + 52, + 146, + 252, + 150, + 92, + 246, + 172, + 193, + 157, + 30, + 167, + 210, + 118, + 29, + 221, + 74, + 149, + 133, + 132, + 136, + 14, + 141, + 8, + 132, + 181, + 225, + 24, + 124, + 138, + 237, + 252, + 225, + 241, + 16, + 89, + 71, + 243, + 33, + 70, + 169, + 20, + 124, + 245, + 110, + 77, + 182, + 104, + 170, + 34, + 194, + 72, + 119, + 175, + 127, + 17, + 75, + 18, + 104, + 231, + 164, + 91, + 77, + 186, + 82, + 38, + 43, + 83, + 189, + 89, + 120, + 3, + 217, + 2, + 26, + 126, + 75, + 67, + 255, + 108, + 16, + 95, + 216, + 26, + 218, + 171, + 58, + 15, + 54, + 213, + 115, + 12, + 246, + 231, + 94, + 173, + 140, + 173, + 197, + 87, + 55, + 249, + 33, + 86, + 163, + 135, + 186, + 192, + 78, + 74, + 119, + 40, + 222, + 45, + 155, + 170, + 33, + 21, + 89, + 83, + 10, + 173, + 123, + 245, + 77, + 162, + 200, + 27, + 203, + 166, + 205, + 172, + 29, + 124, + 124, + 157, + 40, + 201, + 161, + 49, + 189, + 40, + 193, + 20, + 71, + 72, + 86, + 187, + 94, + 138, + 181, + 213, + 216, + 228, + 91, + 22, + 139, + 163, + 150, + 29, + 175, + 189, + 48, + 193, + 5, + 158, + 29, + 20, + 81, + 124, + 105, + 207, + 67, + 159, + 155, + 154, + 206, + 12, + 13, + 54, + 215, + 81, + 176, + 18, + 174, + 105, + 52, + 2, + 251, + 140, + 118, + 3, + 179, + 230, + 80, + 104, + 123, + 82, + 73, + 22, + 179, + 197, + 166, + 163, + 151, + 78, + 177, + 199, + 57, + 71, + 65, + 172, + 55, + 66, + 208, + 83, + 177, + 181, + 127, + 161, + 216, + 195, + 74, + 121, + 163, + 184, + 176, + 200, + 250, + 46, + 37, + 91, + 11, + 203, + 54, + 246, + 24, + 67, + 133, + 34, + 80, + 70, + 110, + 40, + 144, + 137, + 173, + 63, + 119, + 95, + 91, + 255, + 26, + 16, + 248, + 87, + 15, + 76, + 14, + 95, + 77, + 23, + 248, + 184, + 179, + 236, + 217, + 43, + 17, + 236, + 230, + 180, + 176, + 181, + 134, + 184, + 66, + 20, + 99, + 45, + 155, + 94, + 127, + 3, + 7, + 54, + 236, + 25, + 220, + 159, + 214, + 227, + 68, + 246, + 15, + 233, + 158, + 158, + 159, + 54, + 34, + 91, + 78, + 50, + 0, + 125, + 35, + 212, + 210, + 36, + 111, + 169, + 152, + 115, + 118, + 83, + 150, + 217, + 101, + 204, + 240, + 236, + 173, + 21, + 249, + 91, + 133, + 150, + 7, + 124, + 105, + 66, + 221, + 34, + 49, + 218, + 78, + 74, + 94, + 129, + 236, + 159, + 45, + 84, + 36, + 39, + 82, + 157, + 135, + 156, + 197, + 228, + 4, + 36, + 143, + 93, + 68, + 116, + 125, + 76, + 213, + 205, + 214, + 136, + 25, + 197, + 244, + 182, + 1, + 200, + 149, + 189, + 53, + 93, + 230, + 150, + 195, + 43, + 180, + 156, + 18, + 173, + 184, + 185, + 132, + 219, + 207, + 54, + 119, + 141, + 85, + 232, + 26, + 43, + 23, + 250, + 110, + 0, + 78, + 143, + 152, + 226, + 160, + 153, + 67, + 115, + 40, + 172, + 62, + 99, + 55, + 231, + 57, + 170, + 39, + 254, + 51, + 252, + 224, + 205, + 124, + 6, + 163, + 106, + 140, + 89, + 82, + 188, + 152, + 155, + 23, + 149, + 204, + 250, + 76, + 11, + 4, + 148, + 52, + 78, + 121, + 188, + 97, + 77, + 144, + 52, + 104, + 20, + 148, + 50, + 92, + 12, + 218, + 53, + 109, + 105, + 34, + 225, + 124, + 42, + 210, + 180, + 7, + 174, + 68, + 45, + 234, + 238, + 192, + 61, + 193, + 212, + 1, + 252, + 216, + 88, + 151, + 226, + 229, + 234, + 7, + 72, + 176, + 255, + 129, + 113, + 192, + 199, + 255, + 164, + 150, + 234, + 235, + 188, + 81, + 136, + 132, + 199, + 6, + 80, + 208, + 26, + 152, + 120, + 150, + 40, + 19, + 36, + 153, + 151, + 197, + 116, + 93, + 203, + 192, + 121, + 10, + 74, + 172, + 47, + 44, + 59, + 182, + 2, + 237, + 201, + 232, + 64, + 170, + 130, + 115, + 40, + 3, + 51, + 168, + 174, + 98, + 140, + 60, + 192, + 255, + 52, + 122, + 196, + 206, + 110, + 143, + 187, + 240, + 186, + 168, + 194, + 117, + 37, + 255, + 121, + 123, + 113, + 92, + 188, + 232, + 46, + 82, + 90, + 60, + 94, + 63, + 123, + 223, + 151, + 65, + 197, + 240, + 68, + 16, + 227, + 0, + 83, + 210, + 145, + 150, + 90, + 140, + 222, + 32, + 34, + 13, + 2, + 184, + 50, + 102, + 133, + 127, + 192, + 254, + 161, + 230, + 227, + 4, + 13, + 142, + 59, + 125, + 55, + 38, + 36, + 34, + 51, + 252, + 204, + 145, + 24, + 130, + 252, + 89, + 234, + 224, + 91, + 250, + 137, + 135, + 95, + 85, + 220, + 63, + 19, + 254, + 124, + 43, + 193, + 127, + 28, + 232, + 30, + 47, + 28, + 108, + 218, + 54, + 50, + 138, + 96, + 128, + 124, + 204, + 216, + 145, + 13, + 65, + 142, + 112, + 33, + 157, + 36, + 251, + 82, + 10, + 83, + 20, + 176, + 63, + 94, + 7, + 222, + 209, + 87, + 18, + 206, + 155, + 28, + 125, + 246, + 110, + 186, + 6, + 156, + 129, + 95, + 103, + 174, + 246, + 189, + 96, + 34, + 41, + 18, + 8, + 125, + 104, + 58, + 223, + 190, + 165, + 39, + 75, + 220, + 15, + 165, + 55, + 227, + 55, + 164, + 35, + 106, + 87, + 23, + 113, + 161, + 100, + 72, + 164, + 49, + 58, + 4, + 191, + 144, + 229, + 186, + 27, + 245, + 91, + 244, + 115, + 177, + 25, + 125, + 113, + 80, + 160, + 168, + 178, + 65, + 102, + 233, + 122, + 114, + 54, + 104, + 53, + 46, + 88, + 209, + 72, + 211, + 149, + 236, + 89, + 32, + 42, + 102, + 146, + 107, + 16, + 12, + 23, + 71, + 51, + 25, + 124, + 69, + 57, + 247, + 104, + 24, + 190, + 46, + 99, + 224, + 192, + 180, + 21, + 106, + 135, + 214, + 37, + 23, + 224, + 167, + 6, + 179, + 112, + 139, + 197, + 23, + 14, + 125, + 192, + 159, + 163, + 34, + 179, + 6, + 241, + 168, + 155, + 50, + 115, + 138, + 232, + 44, + 156, + 241, + 106, + 226, + 171, + 134, + 89, + 141, + 162, + 185, + 152, + 66, + 200, + 160, + 55, + 74, + 251, + 154, + 198, + 230, + 137, + 12, + 222, + 79, + 88, + 32, + 168, + 73, + 24, + 225, + 206, + 157, + 187, + 123, + 169, + 249, + 236, + 193, + 42, + 172, + 176, + 83, + 164, + 49, + 91, + 110, + 186, + 224, + 109, + 224, + 109, + 57, + 160, + 200, + 175, + 114, + 71, + 164, + 165, + 157, + 15, + 44, + 131, + 252, + 170, + 158, + 140, + 168, + 167, + 159, + 24, + 146, + 43, + 72, + 246, + 221, + 236, + 230, + 246, + 129, + 7, + 168, + 140, + 60, + 68, + 45, + 177, + 126, + 206, + 76, + 116, + 165, + 62, + 26, + 245, + 255, + 68, + 117, + 75, + 176, + 251, + 73, + 139, + 56, + 85, + 163, + 19, + 202, + 16, + 184, + 197, + 157, + 27, + 134, + 139, + 237, + 137, + 163, + 94, + 218, + 233, + 255, + 215, + 90, + 72, + 254, + 247, + 66, + 158, + 102, + 29, + 130, + 133, + 138, + 137, + 220, + 21, + 226, + 66, + 77, + 193, + 115, + 54, + 68, + 195, + 111, + 37, + 208, + 96, + 146, + 98, + 189, + 144, + 187, + 248, + 18, + 250, + 46, + 221, + 219, + 184, + 162, + 228, + 98, + 36, + 2, + 190, + 184, + 115, + 140, + 167, + 27, + 100, + 104, + 27, + 2, + 12, + 224, + 35, + 81, + 65, + 138, + 74, + 51, + 245, + 211, + 155, + 93, + 1, + 15, + 27, + 142, + 248, + 106, + 99, + 125, + 122, + 236, + 188, + 7, + 166, + 84, + 247, + 184, + 87, + 38, + 23, + 118, + 109, + 180, + 166, + 227, + 172, + 217, + 26, + 199, + 63, + 102, + 81, + 200, + 237, + 65, + 217, + 85, + 252, + 181, + 121, + 122, + 43, + 250, + 254, + 240, + 134, + 155, + 246, + 15, + 232, + 177, + 175, + 174, + 105, + 121, + 74, + 125, + 227, + 201, + 174, + 13, + 161, + 173, + 159, + 204, + 151, + 128, + 2, + 18, + 87, + 88, + 13, + 103, + 202, + 161, + 197, + 103, + 120, + 165, + 137, + 245, + 56, + 199, + 203, + 88, + 5, + 147, + 247, + 76, + 47, + 228, + 53, + 161, + 157, + 191, + 156, + 95, + 12, + 44, + 136, + 155, + 29, + 244, + 202, + 92, + 52, + 60, + 38, + 157, + 40, + 122, + 161, + 88, + 61, + 21, + 238, + 68, + 104, + 164, + 40, + 35, + 29, + 21, + 172, + 73, + 133, + 252, + 126, + 186, + 74, + 217, + 61, + 179, + 90, + 123, + 11, + 153, + 12, + 137, + 43, + 141, + 166, + 204, + 47, + 199, + 166, + 168, + 151, + 190, + 157, + 229, + 53, + 143, + 85, + 14, + 83, + 176, + 101, + 140, + 7, + 248, + 111, + 10, + 184, + 18, + 225, + 111, + 79, + 132, + 177, + 89, + 147, + 247, + 0, + 102, + 129, + 84, + 14, + 255, + 138, + 11, + 163, + 112, + 64, + 109, + 240, + 144, + 84, + 1, + 140, + 166, + 9, + 70, + 31, + 14, + 186, + 239, + 71, + 4, + 52, + 181, + 246, + 172, + 104, + 172, + 215, + 32, + 198, + 224, + 152, + 239, + 255, + 209, + 237, + 102, + 225, + 165, + 205, + 72, + 101, + 106, + 11, + 59, + 248, + 20, + 249, + 242, + 230, + 214, + 122, + 208, + 180, + 59, + 105, + 47, + 138, + 106, + 242, + 154, + 73, + 4, + 36, + 135, + 97, + 4, + 72, + 77, + 253, + 111, + 221, + 86, + 135, + 71, + 238, + 73, + 123, + 78, + 41, + 207, + 233, + 47, + 31, + 146, + 212, + 122, + 181, + 115, + 214, + 130, + 13, + 230, + 188, + 106, + 85, + 160, + 20, + 194, + 54, + 66, + 162, + 140, + 94, + 65, + 96, + 251, + 13, + 233, + 246, + 98, + 87, + 124, + 11, + 100, + 138, + 235, + 28, + 68, + 135, + 156, + 142, + 246, + 213, + 255, + 218, + 164, + 242, + 67, + 18, + 1, + 30, + 188, + 220, + 254, + 229, + 58, + 30, + 54, + 150, + 175, + 182, + 157, + 119, + 76, + 174, + 252, + 17, + 96, + 57, + 11, + 216, + 211, + 119, + 109, + 55, + 222, + 46, + 102, + 73, + 233, + 68, + 57, + 28, + 208, + 115, + 182, + 163, + 13, + 83, + 201, + 177, + 137, + 69, + 193, + 158, + 93, + 254, + 173, + 135, + 183, + 133, + 184, + 86, + 28, + 166, + 153, + 88, + 20, + 24, + 39, + 238, + 220, + 157, + 231, + 207, + 251, + 68, + 125, + 179, + 106, + 214, + 143, + 105, + 69, + 235, + 92, + 0, + 131, + 221, + 55, + 44, + 130, + 70, + 9, + 191, + 187, + 45, + 6, + 221, + 220, + 242, + 101, + 125, + 214, + 130, + 91, + 173, + 115, + 187, + 118, + 65, + 185, + 28, + 84, + 198, + 130, + 15, + 1, + 186, + 66, + 130, + 10, + 65, + 19, + 151, + 80, + 159, + 18, + 246, + 86, + 238, + 192, + 197, + 2, + 133, + 86, + 171, + 251, + 207, + 243, + 90, + 251, + 135, + 251, + 23, + 16, + 124, + 199, + 5, + 235, + 117, + 196, + 203, + 68, + 141, + 28, + 218, + 75, + 102, + 172, + 198, + 237, + 186, + 189, + 90, + 244, + 92, + 135, + 85, + 125, + 76, + 211, + 114, + 225, + 67, + 70, + 138, + 153, + 41, + 45, + 105, + 154, + 31, + 159, + 217, + 3, + 29, + 19, + 249, + 195, + 212, + 195, + 217, + 80, + 127, + 122, + 224, + 92, + 102, + 238, + 39, + 57, + 32, + 206, + 49, + 135, + 50, + 231, + 174, + 27, + 70, + 99, + 81, + 204, + 185, + 15, + 145, + 66, + 98, + 167, + 44, + 3, + 183, + 221, + 17, + 188, + 136, + 4, + 156, + 156, + 93, + 137, + 5, + 97, + 164, + 57, + 130, + 236, + 185, + 254, + 167, + 214, + 111, + 211, + 47, + 155, + 107, + 59, + 44, + 37, + 218, + 225, + 152, + 84, + 181, + 217, + 144, + 161, + 7, + 237, + 79, + 43, + 78, + 111, + 25, + 33, + 109, + 104, + 7, + 161, + 124, + 72, + 228, + 122, + 85, + 110, + 108, + 40, + 110, + 233, + 74, + 50, + 253, + 214, + 141, + 71, + 189, + 209, + 14, + 225, + 46, + 152, + 240, + 237, + 224, + 112, + 35, + 1, + 174, + 170, + 174, + 88, + 161, + 140, + 97, + 68, + 100, + 246, + 60, + 199, + 88, + 253, + 191, + 42, + 9, + 155, + 118, + 209, + 122, + 28, + 214, + 20, + 189, + 244, + 152, + 17, + 2, + 104, + 191, + 132, + 215, + 183, + 92, + 97, + 196, + 226, + 18, + 42, + 50, + 7, + 73, + 162, + 208, + 181, + 17, + 132, + 36, + 142, + 247, + 121, + 41, + 39, + 118, + 134, + 88, + 127, + 51, + 74, + 239, + 206, + 38, + 34, + 173, + 122, + 160, + 101, + 218, + 30, + 211, + 179, + 148, + 63, + 150, + 176, + 75, + 66, + 203, + 92, + 122, + 5, + 202, + 16, + 153, + 33, + 246, + 136, + 127, + 242, + 77, + 212, + 48, + 126, + 10, + 224, + 38, + 248, + 111, + 253, + 223, + 68, + 116, + 139, + 94, + 151, + 240, + 74, + 184, + 17, + 40, + 83, + 38, + 163, + 24, + 185, + 170, + 150, + 223, + 101, + 194, + 139, + 85, + 150, + 69, + 112, + 187, + 155, + 24, + 56, + 240, + 159, + 151, + 114, + 255, + 47, + 246, + 172, + 50, + 228, + 222, + 165, + 43, + 58, + 73, + 112, + 50, + 202, + 145, + 20, + 206, + 127, + 227, + 63, + 157, + 2, + 90, + 229, + 158, + 170, + 95, + 15, + 21, + 1, + 210, + 246, + 229, + 155, + 23, + 50, + 158, + 70, + 199, + 62, + 135, + 36, + 231, + 144, + 13, + 74, + 84, + 30, + 121, + 17, + 153, + 49, + 51, + 58, + 190, + 250, + 219, + 113, + 147, + 25, + 152, + 101, + 208, + 52, + 172, + 7, + 89, + 43, + 74, + 144, + 237, + 122, + 66, + 20, + 196, + 1, + 125, + 148, + 20, + 237, + 225, + 82, + 234, + 124, + 86, + 210, + 184, + 59, + 108, + 179, + 102, + 57, + 247, + 251, + 150, + 82, + 123, + 234, + 131, + 59, + 104, + 74, + 173, + 240, + 60, + 212, + 47, + 100, + 11, + 106, + 114, + 115, + 69, + 187, + 54, + 149, + 39, + 219, + 4, + 195, + 136, + 91, + 107, + 43, + 204, + 254, + 124, + 251, + 22, + 43, + 190, + 255, + 69, + 225, + 220, + 202, + 133, + 232, + 224, + 82, + 77, + 131, + 243, + 93, + 131, + 181, + 27, + 110, + 78, + 249, + 5, + 50, + 55, + 135, + 60, + 46, + 84, + 156, + 239, + 183, + 112, + 221, + 81, + 13, + 38, + 59, + 254, + 54, + 176, + 98, + 183, + 94, + 46, + 245, + 158, + 194, + 205, + 32, + 102, + 189, + 204, + 81, + 60, + 19, + 176, + 189, + 195, + 242, + 161, + 25, + 228, + 186, + 254, + 73, + 75, + 31, + 139, + 172, + 25, + 199, + 78, + 206, + 249, + 208, + 205, + 160, + 79, + 61, + 70, + 106, + 210, + 123, + 67, + 54, + 50, + 57, + 252, + 152, + 28, + 186, + 10, + 228, + 39, + 1, + 238, + 19, + 19, + 243, + 179, + 6, + 115, + 41, + 161, + 41, + 27, + 77, + 101, + 42, + 52, + 90, + 210, + 102, + 74, + 213, + 141, + 186, + 253, + 237, + 144, + 229, + 18, + 39, + 133, + 149, + 81, + 193, + 241, + 152, + 4, + 167, + 173, + 244, + 66, + 57, + 194, + 213, + 191, + 197, + 106, + 189, + 38, + 156, + 69, + 57, + 65, + 163, + 141, + 152, + 69, + 254, + 134, + 147, + 203, + 118, + 166, + 10, + 57, + 51, + 90, + 213, + 173, + 13, + 132, + 45, + 110, + 58, + 227, + 108, + 100, + 19, + 196, + 92, + 130, + 72, + 143, + 50, + 241, + 99, + 53, + 41, + 229, + 194, + 80, + 211, + 155, + 4, + 170, + 18, + 131, + 221, + 251, + 77, + 170, + 94, + 203, + 218, + 242, + 234, + 44, + 182, + 99, + 209, + 163, + 50, + 70, + 51, + 157, + 160, + 228, + 188, + 207, + 213, + 84, + 154, + 147, + 144, + 92, + 213, + 234, + 8, + 206, + 241, + 212, + 89, + 60, + 74, + 134, + 25, + 37, + 33, + 102, + 170, + 218, + 198, + 182, + 34, + 40, + 222, + 83, + 191, + 86, + 154, + 224, + 7, + 45, + 93, + 207, + 57, + 71, + 239, + 95, + 61, + 35, + 193, + 89, + 160, + 78, + 73, + 67, + 68, + 167, + 127, + 181, + 41, + 51, + 18, + 154, + 9, + 128, + 60, + 16, + 215, + 160, + 164, + 249, + 153, + 124, + 132, + 206, + 253, + 125, + 132, + 61, + 10, + 208, + 248, + 93, + 151, + 34, + 197, + 249, + 174, + 178, + 243, + 105, + 24, + 107, + 232, + 123, + 208, + 153, + 235, + 204, + 55, + 138, + 180, + 10, + 167, + 160, + 227, + 13, + 210, + 53, + 51, + 247, + 201, + 127, + 214, + 250, + 8, + 116, + 25, + 88, + 153, + 105, + 131, + 114, + 35, + 246, + 186, + 191, + 4, + 179, + 28, + 134, + 158, + 52, + 234, + 118, + 180, + 97, + 76, + 225, + 99, + 118, + 109, + 197, + 34, + 253, + 100, + 122, + 165, + 159, + 114, + 252, + 137, + 200, + 78, + 111, + 171, + 162, + 254, + 162, + 251, + 253, + 206, + 220, + 13, + 171, + 243, + 3, + 116, + 64, + 158, + 195, + 163, + 19, + 119, + 82, + 90, + 213, + 230, + 75, + 236, + 56, + 188, + 36, + 61, + 111, + 75, + 190, + 16, + 77, + 209, + 101, + 31, + 120, + 234, + 189, + 211, + 66, + 10, + 222, + 234, + 255, + 158, + 65, + 95, + 254, + 76, + 169, + 242, + 235, + 208, + 188, + 245, + 30, + 55, + 144, + 187, + 254, + 158, + 107, + 150, + 98, + 53, + 109, + 62, + 59, + 185, + 110, + 221, + 86, + 91, + 22, + 45, + 245, + 27, + 169, + 184, + 141, + 171, + 20, + 36, + 189, + 240, + 174, + 174, + 152, + 76, + 194, + 2, + 124, + 82, + 94, + 89, + 196, + 79, + 123, + 25, + 92, + 164, + 238, + 211, + 127, + 134, + 164, + 31, + 128, + 110, + 184, + 123, + 171, + 153, + 106, + 183, + 218, + 167, + 183, + 248, + 90, + 91, + 58, + 35, + 235, + 64, + 83, + 222, + 175, + 177, + 145, + 35, + 159, + 5, + 39, + 137, + 1, + 1, + 108, + 16, + 33, + 156, + 208, + 234, + 16, + 172, + 151, + 2, + 232, + 165, + 168, + 151, + 89, + 158, + 134, + 81, + 29, + 106, + 249, + 106, + 59, + 160, + 65, + 163, + 49, + 36, + 247, + 151, + 166, + 139, + 164, + 111, + 102, + 9, + 29, + 157, + 96, + 179, + 233, + 126, + 190, + 153, + 95, + 213, + 124, + 33, + 131, + 106, + 34, + 112, + 90, + 211, + 166, + 26, + 56, + 32, + 251, + 125, + 126, + 155, + 189, + 22, + 35, + 189, + 164, + 195, + 12, + 22, + 81, + 209, + 168, + 26, + 26, + 234, + 38, + 179, + 80, + 248, + 49, + 157, + 76, + 172, + 15, + 53, + 180, + 195, + 93, + 143, + 154, + 241, + 236, + 175, + 120, + 73, + 146, + 8, + 48, + 135, + 175, + 198, + 37, + 175, + 158, + 54, + 73, + 81, + 219, + 192, + 251, + 93, + 223, + 243, + 252, + 75, + 63, + 214, + 214, + 239, + 136, + 203, + 112, + 152, + 23, + 112, + 85, + 136, + 45, + 42, + 176, + 90, + 92, + 204, + 91, + 217, + 143, + 128, + 210, + 245, + 139, + 5, + 75, + 225, + 41, + 16, + 131, + 102, + 51, + 52, + 162, + 105, + 176, + 100, + 199, + 82, + 148, + 219, + 205, + 190, + 250, + 18, + 132, + 200, + 220, + 21, + 75, + 65, + 17, + 23, + 82, + 191, + 222, + 172, + 85, + 169, + 156, + 251, + 231, + 67, + 161, + 123, + 140, + 253, + 168, + 63, + 64, + 34, + 237, + 132, + 150, + 142, + 207, + 8, + 62, + 127, + 141, + 51, + 98, + 30, + 165, + 47, + 66, + 134, + 114, + 87, + 35, + 230, + 26, + 69, + 195, + 212, + 187, + 1, + 76, + 195, + 49, + 148, + 54, + 123, + 143, + 68, + 144, + 5, + 203, + 174, + 182, + 138, + 71, + 223, + 20, + 210, + 48, + 9, + 175, + 69, + 61, + 230, + 242, + 17, + 68, + 161, + 183, + 205, + 157, + 55, + 60, + 254, + 58, + 153, + 212, + 228, + 252, + 163, + 103, + 49, + 48, + 201, + 98, + 123, + 162, + 6, + 152, + 229, + 188, + 100, + 57, + 105, + 185, + 41, + 69, + 87, + 142, + 84, + 108, + 168, + 96, + 246, + 229, + 160, + 74, + 228, + 216, + 27, + 0, + 139, + 189, + 142, + 87, + 22, + 5, + 14, + 174, + 55, + 225, + 114, + 228, + 107, + 157, + 225, + 66, + 50, + 39, + 218, + 119, + 36, + 4, + 43, + 153, + 77, + 127, + 138, + 212, + 148, + 219, + 66, + 25, + 203, + 94, + 236, + 221, + 7, + 123, + 57, + 18, + 214, + 117, + 100, + 91, + 154, + 69, + 219, + 38, + 11, + 244, + 209, + 41, + 143, + 164, + 173, + 230, + 114, + 134, + 161, + 135, + 11, + 16, + 160, + 118, + 186, + 99, + 213, + 56, + 22, + 53, + 28, + 231, + 85, + 29, + 69, + 48, + 81, + 229, + 240, + 126, + 109, + 63, + 241, + 142, + 222, + 45, + 214, + 42, + 140, + 9, + 42, + 44, + 96, + 53, + 70, + 65, + 225, + 85, + 146, + 186, + 130, + 214, + 62, + 54, + 56, + 173, + 247, + 34, + 122, + 68, + 212, + 180, + 198, + 99, + 68, + 107, + 151, + 72, + 236, + 103, + 31, + 88, + 239, + 83, + 239, + 236, + 171, + 57, + 12, + 185, + 209, + 157, + 105, + 10, + 175, + 47, + 219, + 16, + 199, + 106, + 23, + 235, + 90, + 33, + 30, + 184, + 228, + 149, + 116, + 157, + 48, + 94, + 216, + 81, + 165, + 190, + 103, + 8, + 232, + 198, + 38, + 231, + 244, + 129, + 61, + 98, + 8, + 168, + 130, + 191, + 227, + 96, + 17, + 99, + 106, + 56, + 143, + 187, + 5, + 206, + 89, + 8, + 149, + 83, + 202, + 196, + 209, + 114, + 151, + 227, + 4, + 102, + 220, + 237, + 143, + 238, + 5, + 237, + 41, + 151, + 206, + 121, + 182, + 102, + 46, + 53, + 27, + 232, + 231, + 248, + 128, + 183, + 190, + 188, + 206, + 171, + 213, + 103, + 199, + 49, + 223, + 129, + 208, + 61, + 187, + 75, + 146, + 3, + 152, + 63, + 17, + 25, + 131, + 188, + 24, + 182, + 212, + 229, + 102, + 227, + 122, + 196, + 143, + 187, + 8, + 179, + 44, + 232, + 208, + 212, + 68, + 218, + 132, + 6, + 159, + 92, + 53, + 49, + 161, + 161, + 79, + 109, + 227, + 227, + 195, + 183, + 253, + 131, + 170, + 178, + 131, + 57, + 46, + 91, + 138, + 25, + 96, + 214, + 174, + 125, + 119, + 120, + 68, + 225, + 134, + 181, + 97, + 22, + 45, + 15, + 218, + 185, + 82, + 179, + 252, + 173, + 194, + 196, + 38, + 196, + 211, + 173, + 67, + 165, + 29, + 47, + 44, + 176, + 90, + 3, + 183, + 78, + 124, + 107, + 121, + 36, + 90, + 1, + 255, + 89, + 75, + 149, + 165, + 194, + 66, + 140, + 35, + 164, + 39, + 42, + 174, + 9, + 223, + 245, + 245, + 204, + 173, + 239, + 157, + 216, + 156, + 190, + 115, + 212, + 131, + 111, + 14, + 152, + 17, + 222, + 19, + 129, + 146, + 144, + 221, + 7, + 83, + 126, + 193, + 42, + 126, + 252, + 248, + 98, + 213, + 89, + 78, + 172, + 213, + 65, + 83, + 65, + 94, + 104, + 21, + 205, + 203, + 20, + 218, + 170, + 173, + 122, + 36, + 79, + 114, + 77, + 185, + 195, + 229, + 215, + 242, + 118, + 160, + 108, + 154, + 235, + 235, + 182, + 38, + 6, + 38, + 165, + 245, + 116, + 213, + 161, + 32, + 100, + 26, + 254, + 136, + 186, + 87, + 90, + 56, + 43, + 126, + 35, + 169, + 46, + 55, + 124, + 189, + 9, + 180, + 86, + 129, + 113, + 122, + 201, + 113, + 179, + 203, + 53, + 25, + 232, + 99, + 95, + 25, + 123, + 156, + 26, + 139, + 147, + 155, + 134, + 238, + 133, + 103, + 236, + 238, + 225, + 27, + 6, + 105, + 127, + 236, + 37, + 197, + 235, + 171, + 37, + 104, + 42, + 144, + 23, + 165, + 91, + 124, + 121, + 246, + 106, + 100, + 6, + 195, + 131, + 159, + 229, + 149, + 40, + 171, + 216, + 173, + 3, + 183, + 100, + 72, + 235, + 12, + 250, + 62, + 46, + 199, + 33, + 159, + 64, + 64, + 248, + 195, + 155, + 243, + 229, + 131, + 93, + 106, + 90, + 161, + 35, + 120, + 53, + 189, + 78, + 164, + 30, + 121, + 129, + 91, + 48, + 156, + 224, + 61, + 116, + 23, + 241, + 35, + 197, + 247, + 147, + 194, + 255, + 138, + 138, + 173, + 215, + 149, + 159, + 245, + 25, + 74, + 52, + 121, + 212, + 107, + 44, + 9, + 50, + 97, + 254, + 218, + 59, + 160, + 225, + 184, + 105, + 246, + 170, + 49, + 155, + 246, + 50, + 58, + 75, + 141, + 182, + 141, + 10, + 205, + 35, + 42, + 28, + 77, + 198, + 227, + 182, + 88, + 91, + 93, + 255, + 168, + 33, + 41, + 65, + 17, + 16, + 121, + 35, + 78, + 140, + 181, + 163, + 86, + 198, + 193, + 223, + 192, + 223, + 152, + 32, + 147, + 65, + 128, + 90, + 203, + 151, + 185, + 153, + 106, + 163, + 226, + 5, + 216, + 233, + 254, + 158, + 92, + 117, + 29, + 152, + 215, + 29, + 225, + 52, + 187, + 117, + 69, + 100, + 136, + 89, + 140, + 163, + 155, + 243, + 59, + 157, + 50, + 105, + 35, + 106, + 18, + 212, + 61, + 254, + 171, + 198, + 171, + 246, + 217, + 138, + 240, + 1, + 164, + 141, + 252, + 159, + 95, + 248, + 134, + 232, + 159, + 177, + 137, + 149, + 51, + 234, + 133, + 93, + 94, + 51, + 164, + 189, + 113, + 162, + 38, + 196, + 39, + 52, + 100, + 2, + 151, + 18, + 184, + 235, + 159, + 11, + 144, + 162, + 26, + 254, + 187, + 209, + 26, + 43, + 110, + 130, + 218, + 114, + 143, + 118, + 246, + 74, + 226, + 14, + 76, + 220, + 243, + 49, + 101, + 232, + 246, + 16, + 183, + 44, + 163, + 181, + 93, + 116, + 241, + 161, + 55, + 111, + 70, + 75, + 18, + 128, + 253, + 252, + 238, + 226, + 183, + 76, + 68, + 240, + 221, + 61, + 141, + 224, + 243, + 183, + 174, + 21, + 133, + 34, + 196, + 0, + 254, + 234, + 129, + 39, + 72, + 123, + 151, + 122, + 129, + 46, + 20, + 172, + 18, + 175, + 51, + 228, + 210, + 68, + 210, + 196, + 234, + 165, + 188, + 101, + 0, + 221, + 217, + 132, + 6, + 196, + 224, + 116, + 61, + 246, + 5, + 52, + 113, + 245, + 242, + 89, + 184, + 152, + 214, + 57, + 73, + 143, + 194, + 163, + 180, + 98, + 207, + 71, + 20, + 134, + 43, + 215, + 72, + 167, + 92, + 34, + 206, + 129, + 161, + 155, + 11, + 95, + 66, + 89, + 168, + 43, + 195, + 48, + 216, + 65, + 2, + 115, + 84, + 133, + 221, + 146, + 180, + 7, + 217, + 119, + 182, + 52, + 64, + 250, + 122, + 136, + 105, + 28, + 133, + 243, + 36, + 52, + 204, + 200, + 46, + 236, + 134, + 209, + 40, + 54, + 13, + 250, + 134, + 62, + 6, + 131, + 82, + 64, + 19, + 20, + 10, + 74, + 211, + 229, + 154, + 254, + 109, + 45, + 121, + 254, + 56, + 139, + 61, + 253, + 145, + 7, + 34, + 114, + 67, + 83, + 173, + 34, + 24, + 229, + 73, + 190, + 2, + 93, + 82, + 10, + 254, + 12, + 249, + 120, + 121, + 241, + 188, + 99, + 16, + 118, + 153, + 92, + 136, + 177, + 7, + 39, + 101, + 51, + 22, + 0, + 181, + 1, + 43, + 68, + 83, + 82, + 255, + 13, + 215, + 163, + 176, + 82, + 41, + 164, + 70, + 215, + 163, + 207, + 144, + 247, + 216, + 40, + 65, + 232, + 154, + 120, + 64, + 244, + 217, + 169, + 150, + 214, + 225, + 180, + 0, + 181, + 90, + 102, + 120, + 82, + 39, + 7, + 237, + 139, + 8, + 88, + 10, + 176, + 93, + 148, + 151, + 128, + 127, + 67, + 94, + 194, + 2, + 92, + 84, + 48, + 232, + 137, + 108, + 240, + 168, + 13, + 169, + 167, + 232, + 217, + 184, + 49, + 30, + 231, + 58, + 180, + 191, + 181, + 45, + 133, + 30, + 241, + 148, + 85, + 29, + 27, + 175, + 137, + 234, + 33, + 44, + 70, + 184, + 226, + 173, + 137, + 125, + 209, + 97, + 144, + 14, + 232, + 114, + 121, + 7, + 231, + 108, + 19, + 160, + 157, + 94, + 140, + 21, + 126, + 0, + 193, + 140, + 70, + 23, + 234, + 244, + 197, + 10, + 170, + 177, + 38, + 211, + 173, + 125, + 31, + 47, + 106, + 74, + 119, + 178, + 78, + 6, + 22, + 99, + 233, + 133, + 209, + 217, + 31, + 148, + 134, + 123, + 201, + 4, + 115, + 219, + 103, + 135, + 101, + 66, + 9, + 215, + 186, + 20, + 231, + 203, + 209, + 74, + 243, + 99, + 10, + 190, + 47, + 114, + 189, + 237, + 47, + 159, + 20, + 73, + 137, + 137, + 254, + 192, + 65, + 63, + 233, + 156, + 205, + 66, + 128, + 26, + 84, + 197, + 242, + 250, + 57, + 173, + 231, + 31, + 142, + 239, + 211, + 196, + 96, + 191, + 96, + 158, + 189, + 147, + 74, + 64, + 99, + 125, + 89, + 93, + 200, + 161, + 162, + 54, + 150, + 38, + 90, + 140, + 71, + 117, + 52, + 162, + 154, + 89, + 118, + 177, + 25, + 217, + 63, + 24, + 161, + 15, + 52, + 51, + 83, + 125, + 40, + 153, + 78, + 122, + 2, + 14, + 253, + 5, + 24, + 78, + 109, + 243, + 62, + 221, + 115, + 245, + 117, + 33, + 233, + 156, + 56, + 211, + 143, + 252, + 222, + 186, + 223, + 92, + 72, + 218, + 178, + 69, + 96, + 216, + 16, + 33, + 82, + 174, + 193, + 218, + 254, + 111, + 87, + 221, + 132, + 154, + 249, + 154, + 243, + 247, + 84, + 73, + 108, + 248, + 166, + 175, + 6, + 55, + 196, + 190, + 185, + 96, + 233, + 119, + 4, + 58, + 106, + 30, + 81, + 28, + 243, + 163, + 26, + 164, + 118, + 52, + 221, + 81, + 143, + 97, + 204, + 113, + 16, + 13, + 231, + 133, + 181, + 160, + 248, + 28, + 139, + 28, + 160, + 228, + 145, + 186, + 94, + 173, + 137, + 54, + 145, + 143, + 183, + 155, + 167, + 31, + 3, + 19, + 28, + 191, + 152, + 199, + 244, + 63, + 114, + 34, + 127, + 38, + 186, + 77, + 187, + 224, + 93, + 25, + 175, + 124, + 183, + 238, + 231, + 210, + 43, + 48, + 137, + 81, + 7, + 133, + 232, + 173, + 176, + 123, + 36, + 66, + 242, + 183, + 39, + 77, + 246, + 4, + 215, + 178, + 23, + 143, + 235, + 226, + 59, + 23, + 78, + 109, + 83, + 222, + 233, + 254, + 142, + 129, + 37, + 183, + 103, + 98, + 249, + 24, + 89, + 180, + 189, + 216, + 254, + 200, + 182, + 0, + 170, + 170, + 70, + 136, + 225, + 3, + 190, + 57, + 68, + 232, + 19, + 180, + 201, + 106, + 99, + 104, + 169, + 4, + 138, + 55, + 239, + 85, + 4, + 180, + 80, + 229, + 88, + 205, + 19, + 190, + 252, + 17, + 48, + 197, + 214, + 3, + 234, + 179, + 22, + 228, + 126, + 122, + 199, + 189, + 180, + 188, + 74, + 18, + 139, + 181, + 185, + 124, + 72, + 37, + 76, + 44, + 206, + 208, + 208, + 148, + 183, + 134, + 229, + 166, + 97, + 103, + 212, + 122, + 23, + 13, + 177, + 176, + 170, + 187, + 6, + 147, + 239, + 243, + 195, + 102, + 7, + 58, + 78, + 184, + 46, + 254, + 190, + 254, + 93, + 21, + 96, + 252, + 39, + 147, + 53, + 185, + 97, + 224, + 86, + 127, + 156, + 182, + 28, + 146, + 233, + 212, + 56, + 22, + 3, + 165, + 26, + 103, + 49, + 247, + 101, + 117, + 59, + 212, + 39, + 215, + 232, + 74, + 171, + 251, + 136, + 65, + 250, + 127, + 71, + 118, + 16, + 237, + 103, + 194, + 234, + 138, + 204, + 206, + 64, + 110, + 218, + 28, + 47, + 11, + 247, + 25, + 106, + 51, + 90, + 200, + 39, + 191, + 188, + 129, + 75, + 47, + 155, + 140, + 185, + 24, + 162, + 135, + 236, + 98, + 53, + 232, + 75, + 98, + 211, + 170, + 68, + 249, + 148, + 199, + 46, + 164, + 92, + 84, + 239, + 65, + 81, + 141, + 247, + 17, + 133, + 193, + 63, + 85, + 101, + 252, + 24, + 163, + 25, + 137, + 113, + 23, + 123, + 89, + 166, + 12, + 135, + 246, + 181, + 70, + 66, + 51, + 66, + 7, + 171, + 223, + 106, + 93, + 124, + 149, + 161, + 129, + 220, + 75, + 123, + 119, + 110, + 83, + 93, + 195, + 225, + 233, + 22, + 250, + 131, + 213, + 184, + 156, + 89, + 98, + 161, + 37, + 2, + 8, + 22, + 241, + 213, + 178, + 20, + 181, + 110, + 172, + 174, + 3, + 206, + 164, + 43, + 130, + 211, + 120, + 202, + 215, + 208, + 254, + 135, + 22, + 49, + 195, + 254, + 112, + 71, + 135, + 158, + 22, + 206, + 227, + 40, + 243, + 109, + 95, + 79, + 114, + 59, + 55, + 213, + 65, + 98, + 175, + 220, + 6, + 113, + 216, + 177, + 10, + 34, + 254, + 119, + 194, + 207, + 20, + 162, + 180, + 29, + 169, + 164, + 10, + 40, + 197, + 159, + 85, + 199, + 201, + 231, + 191, + 248, + 230, + 221, + 77, + 14, + 57, + 48, + 104, + 20, + 44, + 138, + 152, + 44, + 192, + 41, + 223, + 132, + 144, + 90, + 86, + 102, + 59, + 115, + 191, + 172, + 28, + 147, + 132, + 8, + 81, + 201, + 201, + 129, + 204, + 140, + 25, + 187, + 196, + 164, + 79, + 117, + 174, + 122, + 248, + 214, + 52, + 186, + 49, + 8, + 249, + 194, + 157, + 104, + 230, + 190, + 29, + 46, + 180, + 161, + 214, + 70, + 182, + 0, + 76, + 124, + 118, + 211, + 115, + 247, + 97, + 209, + 96, + 114, + 242, + 4, + 85, + 174, + 241, + 55, + 136, + 196, + 57, + 158, + 136, + 111, + 54, + 232, + 209, + 246, + 227, + 173, + 96, + 184, + 210, + 155, + 175, + 97, + 98, + 99, + 26, + 109, + 74, + 80, + 169, + 95, + 5, + 70, + 10, + 68, + 11, + 221, + 126, + 29, + 163, + 45, + 116, + 93, + 29, + 188, + 222, + 214, + 48, + 186, + 212, + 162, + 249, + 67, + 195, + 176, + 211, + 143, + 22, + 85, + 101, + 153, + 18, + 116, + 69, + 189, + 140, + 244, + 64, + 210, + 162, + 48, + 233, + 104, + 39, + 146, + 46, + 33, + 86, + 6, + 246, + 181, + 214, + 150, + 123, + 66, + 143, + 71, + 95, + 215, + 198, + 12, + 120, + 9, + 13, + 165, + 6, + 150, + 54, + 150, + 179, + 37, + 239, + 38, + 3, + 130, + 255, + 35, + 152, + 205, + 41, + 135, + 173, + 90, + 81, + 225, + 107, + 201, + 57, + 95, + 13, + 170, + 158, + 233, + 83, + 167, + 57, + 19, + 145, + 17, + 133, + 78, + 224, + 27, + 220, + 84, + 73, + 175, + 242, + 199, + 113, + 168, + 98, + 100, + 104, + 109, + 48, + 24, + 2, + 250, + 120, + 97, + 87, + 52, + 219, + 193, + 44, + 203, + 14, + 30, + 170, + 233, + 158, + 108, + 124, + 134, + 26, + 114, + 3, + 248, + 56, + 231, + 15, + 155, + 175, + 131, + 106, + 49, + 12, + 1, + 6, + 48, + 228, + 9, + 90, + 68, + 42, + 38, + 81, + 236, + 209, + 165, + 117, + 191, + 157, + 44, + 122, + 201, + 112, + 120, + 238, + 15, + 226, + 47, + 72, + 44, + 76, + 92, + 156, + 180, + 203, + 21, + 246, + 124, + 59, + 209, + 132, + 83, + 224, + 72, + 197, + 123, + 46, + 33, + 115, + 245, + 240, + 33, + 194, + 151, + 185, + 50, + 12, + 115, + 44, + 60, + 255, + 111, + 242, + 46, + 125, + 69, + 165, + 35, + 217, + 29, + 117, + 96, + 223, + 173, + 241, + 234, + 28, + 73, + 153, + 181, + 127, + 137, + 192, + 111, + 222, + 212, + 92, + 247, + 117, + 8, + 201, + 102, + 38, + 110, + 59, + 56, + 176, + 81, + 246, + 13, + 41, + 80, + 19, + 239, + 171, + 67, + 248, + 107, + 13, + 23, + 0, + 195, + 51, + 90, + 68, + 85, + 81, + 73, + 66, + 115, + 241, + 129, + 117, + 249, + 144, + 146, + 15, + 249, + 33, + 248, + 155, + 160, + 24, + 159, + 5, + 232, + 146, + 193, + 222, + 38, + 74, + 237, + 0, + 41, + 140, + 79, + 227, + 67, + 201, + 247, + 255, + 190, + 151, + 103, + 64, + 151, + 112, + 232, + 19, + 49, + 123, + 194, + 41, + 45, + 252, + 6, + 94, + 234, + 23, + 114, + 43, + 203, + 69, + 183, + 91, + 229, + 55, + 0, + 117, + 211, + 203, + 147, + 23, + 198, + 205, + 123, + 62, + 57, + 161, + 220, + 81, + 208, + 128, + 235, + 18, + 68, + 203, + 197, + 112, + 254, + 24, + 148, + 137, + 189, + 188, + 216, + 227, + 54, + 35, + 199, + 1, + 222, + 83, + 31, + 12, + 226, + 79, + 89, + 139, + 125, + 115, + 78, + 92, + 62, + 186, + 50, + 140, + 66, + 65, + 33, + 46, + 208, + 237, + 13, + 56, + 171, + 233, + 98, + 246, + 255, + 178, + 240, + 4, + 77, + 185, + 227, + 23, + 254, + 239, + 201, + 140, + 194, + 232, + 90, + 237, + 72, + 241, + 100, + 221, + 149, + 91, + 3, + 253, + 109, + 145, + 127, + 120, + 69, + 240, + 3, + 142, + 248, + 213, + 196, + 92, + 203, + 199, + 62, + 22, + 185, + 48, + 179, + 159, + 66, + 57, + 204, + 125, + 193, + 243, + 133, + 208, + 59, + 250, + 61, + 224, + 131, + 114, + 133, + 172, + 151, + 96, + 124, + 224, + 253, + 124, + 90, + 19, + 43, + 145, + 195, + 204, + 100, + 105, + 130, + 149, + 72, + 175, + 101, + 232, + 127, + 242, + 220, + 202, + 40, + 148, + 111, + 145, + 178, + 52, + 58, + 181, + 11, + 124, + 78, + 201, + 141, + 185, + 120, + 148, + 189, + 76, + 44, + 63, + 56, + 94, + 65, + 190, + 135, + 142, + 207, + 210, + 120, + 188, + 147, + 160, + 141, + 18, + 29, + 47, + 104, + 255, + 91, + 215, + 21, + 240, + 34, + 66, + 215, + 128, + 7, + 142, + 61, + 250, + 57, + 214, + 188, + 81, + 171, + 67, + 5, + 179, + 1, + 167, + 39, + 158, + 192, + 197, + 222, + 141, + 211, + 235, + 235, + 29, + 244, + 5, + 248, + 49, + 189, + 13, + 193, + 35, + 135, + 148, + 215, + 212, + 169, + 169, + 124, + 36, + 181, + 70, + 194, + 30, + 67, + 91, + 10, + 137, + 225, + 112, + 138, + 88, + 215, + 52, + 26, + 255, + 173, + 237, + 235, + 210, + 130, + 243, + 216, + 171, + 125, + 233, + 24, + 67, + 34, + 154, + 215, + 245, + 179, + 17, + 13, + 123, + 37, + 223, + 202, + 5, + 82, + 129, + 145, + 154, + 144, + 41, + 202, + 211, + 169, + 147, + 208, + 217, + 159, + 38, + 95, + 143, + 175, + 86, + 39, + 135, + 42, + 70, + 165, + 229, + 21, + 188, + 127, + 152, + 231, + 41, + 112, + 126, + 175, + 5, + 65, + 146, + 35, + 87, + 99, + 190, + 169, + 195, + 185, + 244, + 100, + 209, + 39, + 215, + 40, + 220, + 57, + 50, + 73, + 52, + 86, + 106, + 200, + 121, + 152, + 68, + 75, + 43, + 215, + 47, + 246, + 246, + 9, + 119, + 121, + 255, + 189, + 227, + 67, + 198, + 212, + 38, + 116, + 49, + 235, + 142, + 165, + 54, + 61, + 139, + 206, + 240, + 46, + 30, + 177, + 214, + 42, + 98, + 6, + 9, + 34, + 245, + 104, + 158, + 70, + 213, + 46, + 155, + 179, + 80, + 39, + 226, + 235, + 62, + 23, + 136, + 3, + 126, + 138, + 197, + 124, + 127, + 122, + 7, + 23, + 8, + 146, + 122, + 77, + 142, + 73, + 174, + 120, + 236, + 13, + 163, + 136, + 233, + 161, + 208, + 69, + 210, + 138, + 233, + 231, + 107, + 227, + 54, + 147, + 255, + 64, + 98, + 108, + 106, + 148, + 174, + 141, + 172, + 78, + 186, + 162, + 149, + 141, + 140, + 116, + 108, + 102, + 187, + 202, + 167, + 4, + 70, + 127, + 86, + 76, + 122, + 214, + 236, + 120, + 118, + 176, + 32, + 202, + 234, + 19, + 160, + 184, + 182, + 129, + 53, + 91, + 101, + 181, + 70, + 232, + 252, + 33, + 191, + 196, + 111, + 96, + 3, + 236, + 11, + 156, + 136, + 50, + 109, + 114, + 111, + 109, + 48, + 241, + 184, + 43, + 113, + 220, + 191, + 41, + 130, + 109, + 43, + 234, + 114, + 118, + 75, + 180, + 130, + 203, + 238, + 92, + 126, + 201, + 15, + 227, + 31, + 245, + 60, + 82, + 65, + 167, + 77, + 130, + 12, + 93, + 222, + 195, + 241, + 252, + 252, + 63, + 74, + 86, + 194, + 138, + 206, + 168, + 194, + 2, + 65, + 58, + 240, + 65, + 192, + 237, + 179, + 13, + 43, + 57, + 81, + 58, + 158, + 6, + 39, + 210, + 61, + 237, + 34, + 119, + 113, + 213, + 106, + 62, + 81, + 38, + 209, + 167, + 56, + 161, + 133, + 184, + 60, + 57, + 134, + 176, + 109, + 211, + 65, + 101, + 13, + 206, + 243, + 195, + 45, + 129, + 57, + 245, + 204, + 34, + 133, + 80, + 51, + 73, + 124, + 85, + 243, + 14, + 230, + 52, + 32, + 173, + 230, + 130, + 213, + 160, + 231, + 70, + 252, + 219, + 218, + 21, + 243, + 33, + 11, + 14, + 190, + 72, + 1, + 111, + 55, + 19, + 67, + 129, + 124, + 22, + 236, + 46, + 52, + 219, + 222, + 189, + 0, + 173, + 42, + 127, + 27, + 42, + 224, + 54, + 21, + 63, + 164, + 75, + 22, + 116, + 88, + 38, + 198, + 62, + 178, + 250, + 141, + 211, + 226, + 8, + 49, + 18, + 11, + 40, + 79, + 144, + 211, + 46, + 203, + 175, + 43, + 251, + 131, + 78, + 151, + 214, + 43, + 30, + 209, + 209, + 79, + 62, + 164, + 241, + 237, + 122, + 180, + 68, + 120, + 69, + 123, + 104, + 74, + 29, + 39, + 136, + 1, + 195, + 4, + 19, + 103, + 197, + 170, + 85, + 206, + 209, + 37, + 115, + 17, + 92, + 48, + 116, + 209, + 197, + 223, + 124, + 241, + 254, + 49, + 212, + 171, + 123, + 135, + 193, + 21, + 188, + 5, + 40, + 200, + 98, + 142, + 49, + 139, + 74, + 84, + 70, + 90, + 121, + 192, + 97, + 140, + 0, + 25, + 240, + 14, + 33, + 69, + 81, + 167, + 113, + 225, + 116, + 59, + 242, + 158, + 55, + 108, + 226, + 116, + 38, + 239, + 215, + 51, + 188, + 75, + 95, + 65, + 74, + 1, + 152, + 13, + 210, + 140, + 44, + 49, + 122, + 50, + 110, + 79, + 1, + 247, + 86, + 220, + 98, + 117, + 42, + 44, + 171, + 4, + 18, + 38, + 173, + 55, + 193, + 15, + 125, + 157, + 65, + 54, + 205, + 132, + 93, + 138, + 142, + 41, + 60, + 243, + 94, + 102, + 34, + 249, + 5, + 63, + 177, + 30, + 241, + 144, + 9, + 233, + 36, + 232, + 101, + 230, + 124, + 143, + 134, + 216, + 111, + 184, + 79, + 134, + 225, + 222, + 86, + 247, + 247, + 41, + 173, + 5, + 161, + 129, + 11, + 14, + 181, + 84, + 248, + 56, + 68, + 251, + 224, + 12, + 226, + 224, + 11, + 141, + 101, + 12, + 116, + 89, + 20, + 10, + 44, + 226, + 113, + 232, + 0, + 146, + 93, + 74, + 206, + 240, + 112, + 97, + 190, + 18, + 222, + 247, + 3, + 224, + 239, + 118, + 93, + 171, + 117, + 67, + 101, + 205, + 14, + 233, + 132, + 88, + 97, + 16, + 247, + 221, + 184, + 183, + 63, + 22, + 233, + 94, + 169, + 215, + 154, + 94, + 22, + 179, + 155, + 94, + 83, + 149, + 83, + 231, + 135, + 207, + 205, + 0, + 96, + 23, + 251, + 183, + 71, + 168, + 179, + 164, + 177, + 166, + 140, + 3, + 33, + 41, + 3, + 121, + 253, + 228, + 116, + 230, + 31, + 177, + 21, + 107, + 127, + 79, + 62, + 40, + 206, + 41, + 51, + 14, + 158, + 234, + 248, + 81, + 95, + 134, + 118, + 213, + 213, + 193, + 205, + 220, + 156, + 247, + 112, + 54, + 104, + 195, + 206, + 46, + 21, + 95, + 40, + 145, + 254, + 197, + 74, + 223, + 149, + 200, + 96, + 101, + 219, + 198, + 51, + 211, + 127, + 71, + 171, + 32, + 122, + 222, + 242, + 75, + 207, + 206, + 180, + 105, + 153, + 97, + 251, + 209, + 35, + 129, + 137, + 254, + 131, + 123, + 132, + 218, + 149, + 150, + 195, + 203, + 192, + 20, + 159, + 3, + 255, + 2, + 62, + 58, + 67, + 229, + 112, + 44, + 186, + 192, + 98, + 145, + 127, + 231, + 246, + 166, + 102, + 250, + 23, + 49, + 171, + 245, + 1, + 47, + 210, + 192, + 254, + 235, + 227, + 97, + 102, + 230, + 254, + 193, + 125, + 168, + 23, + 227, + 182, + 5, + 162, + 69, + 207, + 68, + 35, + 243, + 254, + 23, + 3, + 181, + 158, + 31, + 196, + 250, + 146, + 235, + 108, + 28, + 201, + 189, + 57, + 216, + 174, + 103, + 167, + 122, + 8, + 128, + 78, + 51, + 50, + 237, + 117, + 87, + 178, + 135, + 28, + 216, + 137, + 33, + 84, + 235, + 198, + 161, + 6, + 255, + 210, + 98, + 5, + 106, + 110, + 40, + 81, + 153, + 61, + 35, + 3, + 87, + 172, + 192, + 2, + 113, + 40, + 141, + 59, + 133, + 227, + 3, + 62, + 17, + 2, + 126, + 72, + 152, + 125, + 139, + 88, + 200, + 148, + 10, + 163, + 127, + 208, + 29, + 168, + 160, + 255, + 105, + 134, + 124, + 71, + 176, + 1, + 34, + 59, + 152, + 1, + 177, + 195, + 101, + 119, + 39, + 11, + 190, + 239, + 53, + 75, + 199, + 199, + 151, + 180, + 127, + 8, + 181, + 170, + 138, + 44, + 42, + 19, + 101, + 122, + 43, + 93, + 164, + 251, + 44, + 149, + 235, + 193, + 203, + 77, + 123, + 188, + 56, + 195, + 45, + 11, + 83, + 129, + 3, + 25, + 94, + 61, + 196, + 142, + 140, + 240, + 104, + 205, + 193, + 83, + 92, + 87, + 74, + 112, + 217, + 204, + 108, + 143, + 71, + 122, + 197, + 162, + 152, + 109, + 88, + 5, + 236, + 47, + 160, + 212, + 96, + 160, + 99, + 93, + 242, + 56, + 160, + 172, + 209, + 42, + 182, + 199, + 180, + 249, + 236, + 5, + 104, + 164, + 99, + 166, + 84, + 97, + 27, + 131, + 162, + 252, + 104, + 131, + 79, + 20, + 86, + 95, + 254, + 212, + 214, + 21, + 206, + 113, + 250, + 76, + 119, + 14, + 73, + 16, + 42, + 130, + 16, + 37, + 110, + 163, + 49, + 238, + 162, + 175, + 48, + 218, + 109, + 17, + 223, + 117, + 37, + 215, + 41, + 244, + 131, + 16, + 223, + 215, + 233, + 137, + 176, + 178, + 111, + 100, + 51, + 138, + 59, + 70, + 35, + 117, + 22, + 82, + 92, + 21, + 134, + 91, + 183, + 131, + 156, + 123, + 129, + 201, + 31, + 55, + 205, + 220, + 123, + 172, + 127, + 66, + 59, + 170, + 33, + 77, + 22, + 164, + 96, + 166, + 31, + 226, + 178, + 236, + 134, + 94, + 130, + 1, + 238, + 152, + 236, + 19, + 242, + 110, + 9, + 139, + 144, + 16, + 219, + 77, + 4, + 236, + 28, + 193, + 57, + 154, + 97, + 38, + 206, + 18, + 179, + 39, + 101, + 15, + 141, + 252, + 136, + 53, + 71, + 55, + 182, + 194, + 77, + 169, + 197, + 178, + 194, + 14, + 39, + 233, + 51, + 133, + 109, + 33, + 85, + 239, + 124, + 180, + 90, + 95, + 26, + 177, + 16, + 113, + 110, + 157, + 67, + 189, + 126, + 253, + 25, + 199, + 9, + 49, + 207, + 101, + 231, + 211, + 29, + 18, + 189, + 185, + 98, + 28, + 245, + 188, + 167, + 58, + 63, + 116, + 164, + 8, + 40, + 199, + 74, + 162, + 168, + 63, + 182, + 202, + 145, + 89, + 75, + 1, + 164, + 251, + 51, + 8, + 28, + 12, + 181, + 53, + 58, + 135, + 203, + 245, + 142, + 70, + 8, + 182, + 72, + 61, + 156, + 12, + 91, + 213, + 251, + 149, + 62, + 28, + 55, + 205, + 72, + 97, + 3, + 245, + 5, + 149, + 188, + 154, + 162, + 13, + 112, + 34, + 131, + 135, + 4, + 63, + 142, + 106, + 98, + 54, + 168, + 161, + 107, + 113, + 11, + 66, + 143, + 137, + 122, + 164, + 61, + 95, + 108, + 147, + 224, + 107, + 78, + 243, + 255, + 234, + 118, + 115, + 125, + 217, + 104, + 93, + 80, + 81, + 117, + 210, + 48, + 188, + 107, + 2, + 214, + 9, + 13, + 119, + 245, + 142, + 226, + 76, + 203, + 29, + 173, + 134, + 206, + 124, + 63, + 73, + 69, + 33, + 89, + 188, + 159, + 72, + 236, + 36, + 1, + 99, + 139, + 159, + 109, + 170, + 97, + 154, + 74, + 16, + 119, + 23, + 142, + 29, + 102, + 89, + 202, + 210, + 147, + 55, + 204, + 77, + 252, + 125, + 191, + 106, + 154, + 169, + 153, + 49, + 143, + 92, + 106, + 118, + 22, + 147, + 248, + 154, + 203, + 233, + 159, + 158, + 66, + 13, + 251, + 198, + 112, + 144, + 72, + 78, + 120, + 74, + 182, + 166, + 141, + 60, + 208, + 252, + 162, + 188, + 142, + 219, + 60, + 104, + 35, + 5, + 10, + 121, + 37, + 92, + 255, + 15, + 121, + 101, + 48, + 74, + 23, + 140, + 174, + 251, + 245, + 24, + 237, + 8, + 225, + 13, + 208, + 54, + 167, + 73, + 117, + 149, + 94, + 219, + 27, + 86, + 124, + 11, + 73, + 22, + 31, + 187, + 50, + 217, + 192, + 12, + 47, + 75, + 131, + 113, + 61, + 249, + 125, + 83, + 253, + 210, + 5, + 83, + 229, + 40, + 148, + 136, + 9, + 173, + 139, + 237, + 98, + 50, + 55, + 71, + 117, + 73, + 41, + 36, + 34, + 55, + 174, + 236, + 215, + 8, + 93, + 245, + 43, + 113, + 186, + 226, + 232, + 230, + 13, + 22, + 220, + 204, + 103, + 117, + 121, + 134, + 13, + 43, + 48, + 255, + 94, + 200, + 7, + 148, + 58, + 213, + 232, + 107, + 167, + 213, + 227, + 223, + 222, + 84, + 138, + 158, + 179, + 44, + 83, + 190, + 60, + 15, + 84, + 165, + 110, + 130, + 145, + 31, + 91, + 215, + 32, + 220, + 51, + 41, + 2, + 37, + 33, + 213, + 107, + 166, + 229, + 202, + 126, + 89, + 184, + 235, + 247, + 82, + 84, + 55, + 142, + 139, + 143, + 136, + 142, + 120, + 11, + 58, + 201, + 252, + 253, + 58, + 15, + 57, + 126, + 28, + 240, + 214, + 200, + 142, + 223, + 27, + 81, + 115, + 148, + 168, + 38, + 83, + 101, + 91, + 158, + 233, + 178, + 188, + 39, + 77, + 243, + 67, + 50, + 198, + 239, + 65, + 235, + 198, + 249, + 200, + 21, + 13, + 50, + 59, + 134, + 23, + 254, + 25, + 251, + 224, + 100, + 179, + 42, + 59, + 49, + 14, + 223, + 246, + 99, + 108, + 190, + 19, + 234, + 100, + 192, + 156, + 221, + 233, + 68, + 73, + 14, + 7, + 149, + 51, + 134, + 20, + 90, + 221, + 202, + 161, + 205, + 72, + 87, + 212, + 15, + 140, + 59, + 8, + 168, + 121, + 80, + 225, + 166, + 16, + 145, + 23, + 101, + 145, + 18, + 56, + 91, + 247, + 138, + 100, + 173, + 21, + 153, + 176, + 2, + 133, + 235, + 117, + 202, + 30, + 76, + 48, + 110, + 227, + 192, + 218, + 7, + 205, + 233, + 227, + 115, + 206, + 109, + 208, + 28, + 163, + 223, + 193, + 36, + 202, + 15, + 69, + 229, + 21, + 69, + 30, + 141, + 222, + 130, + 200, + 6, + 179, + 156, + 46, + 227, + 34, + 13, + 40, + 6, + 218, + 94, + 84, + 255, + 22, + 90, + 198, + 17, + 96, + 101, + 86, + 79, + 117, + 240, + 227, + 188, + 181, + 55, + 105, + 99, + 118, + 64, + 191, + 15, + 1, + 59, + 237, + 107, + 192, + 88, + 36, + 191, + 168, + 152, + 243, + 46, + 246, + 41, + 239, + 204, + 58, + 83, + 76, + 244, + 107, + 17, + 227, + 138, + 174, + 205, + 144, + 57, + 27, + 133, + 203, + 106, + 196, + 238, + 109, + 75, + 215, + 163, + 131, + 9, + 44, + 17, + 237, + 116, + 194, + 5, + 38, + 245, + 89, + 144, + 11, + 192, + 114, + 116, + 15, + 213, + 49, + 211, + 4, + 235, + 72, + 90, + 71, + 129, + 173, + 52, + 8, + 143, + 63, + 220, + 33, + 11, + 193, + 79, + 1, + 32, + 52, + 246, + 82, + 189, + 173, + 4, + 25, + 66, + 225, + 251, + 167, + 113, + 186, + 32, + 95, + 163, + 91, + 14, + 204, + 193, + 27, + 96, + 135, + 124, + 251, + 67, + 11, + 134, + 194, + 177, + 192, + 74, + 208, + 53, + 152, + 250, + 153, + 130, + 100, + 5, + 215, + 136, + 141, + 85, + 129, + 100, + 195, + 233, + 162, + 87, + 3, + 111, + 132, + 199, + 244, + 13, + 71, + 226, + 194, + 227, + 189, + 116, + 206, + 27, + 103, + 248, + 45, + 197, + 213, + 156, + 243, + 99, + 114, + 204, + 99, + 202, + 5, + 15, + 129, + 110, + 150, + 139, + 194, + 209, + 55, + 23, + 22, + 38, + 122, + 165, + 113, + 247, + 101, + 166, + 174, + 123, + 177, + 143, + 16, + 68, + 53, + 57, + 136, + 146, + 199, + 8, + 68, + 6, + 169, + 129, + 211, + 73, + 235, + 253, + 213, + 87, + 165, + 136, + 10, + 179, + 140, + 135, + 7, + 90, + 81, + 244, + 252, + 143, + 207, + 8, + 232, + 83, + 77, + 113, + 54, + 227, + 228, + 140, + 164, + 89, + 202, + 233, + 46, + 125, + 97, + 16, + 96, + 128, + 58, + 142, + 141, + 98, + 59, + 150, + 114, + 155, + 4, + 180, + 17, + 206, + 30, + 62, + 69, + 33, + 229, + 6, + 27, + 246, + 64, + 71, + 239, + 109, + 136, + 220, + 205, + 51, + 36, + 86, + 232, + 58, + 239, + 65, + 245, + 116, + 196, + 143, + 244, + 26, + 219, + 29, + 6, + 106, + 6, + 126, + 204, + 218, + 155, + 52, + 23, + 54, + 222, + 125, + 149, + 198, + 137, + 30, + 56, + 249, + 3, + 250, + 28, + 245, + 124, + 55, + 203, + 39, + 249, + 177, + 181, + 79, + 196, + 176, + 72, + 21, + 48, + 192, + 226, + 193, + 71, + 110, + 105, + 199, + 200, + 183, + 136, + 142, + 207, + 153, + 208, + 191, + 70, + 25, + 13, + 194, + 48, + 11, + 138, + 184, + 187, + 52, + 9, + 138, + 76, + 7, + 13, + 98, + 93, + 197, + 186, + 230, + 210, + 195, + 248, + 137, + 28, + 253, + 185, + 42, + 210, + 179, + 225, + 85, + 209, + 224, + 14, + 63, + 234, + 236, + 255, + 54, + 10, + 70, + 224, + 20, + 100, + 149, + 68, + 13, + 127, + 17, + 80, + 116, + 179, + 144, + 78, + 2, + 187, + 13, + 74, + 254, + 33, + 76, + 5, + 79, + 31, + 141, + 210, + 255, + 226, + 248, + 50, + 251, + 84, + 229, + 52, + 124, + 85, + 150, + 131, + 215, + 91, + 78, + 31, + 99, + 42, + 48, + 229, + 237, + 60, + 209, + 90, + 7, + 212, + 80, + 131, + 219, + 245, + 13, + 201, + 1, + 238, + 234, + 194, + 174, + 88, + 169, + 250, + 117, + 138, + 209, + 37, + 133, + 193, + 36, + 175, + 197, + 120, + 126, + 154, + 54, + 111, + 91, + 15, + 254, + 6, + 188, + 209, + 184, + 201, + 192, + 230, + 66, + 231, + 244, + 27, + 25, + 79, + 175, + 67, + 128, + 213, + 44, + 255, + 64, + 89, + 254, + 96, + 235, + 23, + 149, + 203, + 242, + 179, + 167, + 92, + 114, + 124, + 175, + 203, + 27, + 145, + 137, + 110, + 46, + 187, + 139, + 143, + 10, + 38, + 139, + 254, + 90, + 20, + 30, + 30, + 89, + 100, + 65, + 8, + 99, + 99, + 186, + 240, + 24, + 55, + 180, + 18, + 59, + 237, + 33, + 85, + 141, + 42, + 83, + 9, + 21, + 120, + 160, + 3, + 139, + 198, + 66, + 52, + 245, + 69, + 19, + 155, + 249, + 62, + 217, + 180, + 159, + 232, + 25, + 192, + 40, + 135, + 90, + 247, + 118, + 54, + 31, + 61, + 53, + 34, + 2, + 168, + 153, + 51, + 114, + 100, + 186, + 120, + 153, + 120, + 212, + 181, + 45, + 165, + 61, + 31, + 217, + 53, + 130, + 11, + 216, + 0, + 14, + 247, + 113, + 248, + 14, + 246, + 212, + 104, + 38, + 132, + 148, + 216, + 17, + 71, + 100, + 158, + 199, + 75, + 76, + 203, + 0, + 135, + 33, + 148, + 73, + 158, + 153, + 147, + 159, + 41, + 3, + 179, + 2, + 246, + 136, + 254, + 182, + 251, + 106, + 29, + 58, + 236, + 196, + 98, + 249, + 86, + 172, + 2, + 234, + 227, + 45, + 231, + 166, + 146, + 218, + 21, + 101, + 24, + 208, + 242, + 235, + 67, + 70, + 175, + 17, + 201, + 26, + 246, + 135, + 45, + 185, + 184, + 16, + 91, + 131, + 213, + 134, + 249, + 209, + 23, + 66, + 179, + 152, + 79, + 205, + 67, + 17, + 229, + 203, + 43, + 230, + 114, + 237, + 133, + 247, + 56, + 144, + 11, + 126, + 16, + 27, + 96, + 2, + 6, + 162, + 228, + 105, + 185, + 255, + 103, + 140, + 35, + 119, + 91, + 176, + 38, + 132, + 201, + 22, + 241, + 208, + 10, + 28, + 59, + 2, + 132, + 252, + 142, + 223, + 95, + 107, + 227, + 215, + 156, + 172, + 109, + 52, + 115, + 175, + 153, + 102, + 171, + 151, + 169, + 148, + 4, + 165, + 59, + 94, + 130, + 123, + 230, + 15, + 18, + 160, + 43, + 120, + 253, + 167, + 101, + 107, + 211, + 180, + 239, + 168, + 76, + 187, + 38, + 199, + 9, + 95, + 38, + 120, + 125, + 226, + 28, + 230, + 87, + 140, + 107, + 131, + 46, + 154, + 108, + 88, + 109, + 81, + 138, + 1, + 113, + 26, + 202, + 195, + 169, + 247, + 166, + 188, + 14, + 63, + 131, + 180, + 155, + 23, + 223, + 176, + 240, + 192, + 4, + 158, + 117, + 190, + 22, + 198, + 29, + 74, + 175, + 210, + 251, + 79, + 140, + 175, + 4, + 49, + 31, + 124, + 139, + 104, + 79, + 215, + 162, + 60, + 215, + 215, + 49, + 228, + 188, + 177, + 2, + 172, + 148, + 145, + 52, + 243, + 131, + 149, + 188, + 191, + 79, + 102, + 134, + 219, + 124, + 155, + 166, + 167, + 252, + 115, + 70, + 170, + 194, + 194, + 86, + 227, + 35, + 96, + 126, + 13, + 37, + 2, + 193, + 34, + 206, + 173, + 36, + 210, + 129, + 240, + 210, + 7, + 13, + 212, + 37, + 206, + 98, + 137, + 81, + 99, + 53, + 72, + 47, + 120, + 98, + 113, + 200, + 101, + 77, + 2, + 204, + 171, + 188, + 4, + 137, + 15, + 68, + 32, + 50, + 87, + 44, + 98, + 150, + 192, + 208, + 98, + 196, + 243, + 140, + 96, + 243, + 230, + 151, + 191, + 229, + 90, + 32, + 90, + 46, + 130, + 255, + 134, + 150, + 78, + 97, + 200, + 229, + 232, + 45, + 219, + 37, + 197, + 165, + 166, + 49, + 235, + 216, + 188, + 121, + 33, + 183, + 205, + 55, + 33, + 78, + 48, + 172, + 13, + 47, + 150, + 185, + 218, + 75, + 12, + 67, + 76, + 52, + 240, + 138, + 38, + 74, + 117, + 36, + 41, + 199, + 184, + 188, + 48, + 166, + 116, + 134, + 160, + 51, + 106, + 84, + 97, + 181, + 247, + 96, + 148, + 141, + 48, + 146, + 19, + 129, + 38, + 86, + 73, + 158, + 109, + 78, + 153, + 34, + 183, + 230, + 170, + 24, + 167, + 150, + 254, + 186, + 45, + 122, + 87, + 252, + 137, + 26, + 115, + 65, + 31, + 31, + 92, + 88, + 237, + 50, + 108, + 93, + 250, + 143, + 46, + 71, + 219, + 12, + 16, + 226, + 62, + 177, + 70, + 99, + 55, + 186, + 166, + 180, + 93, + 34, + 145, + 20, + 99, + 34, + 83, + 206, + 68, + 120, + 221, + 17, + 133, + 144, + 192, + 10, + 238, + 140, + 113, + 129, + 156, + 189, + 70, + 207, + 157, + 29, + 185, + 72, + 218, + 168, + 212, + 147, + 174, + 57, + 74, + 5, + 210, + 48, + 43, + 125, + 207, + 35, + 175, + 201, + 160, + 222, + 128, + 124, + 175, + 152, + 179, + 148, + 231, + 251, + 0, + 109, + 13, + 183, + 136, + 43, + 28, + 12, + 49, + 6, + 21, + 222, + 240, + 56, + 93, + 98, + 83, + 134, + 61, + 102, + 6, + 204, + 231, + 220, + 182, + 175, + 70, + 16, + 80, + 128, + 248, + 101, + 82, + 37, + 119, + 16, + 127, + 151, + 155, + 206, + 150, + 235, + 216, + 108, + 58, + 131, + 23, + 180, + 207, + 2, + 98, + 42, + 84, + 239, + 54, + 151, + 229, + 180, + 142, + 243, + 247, + 191, + 158, + 236, + 36, + 147, + 26, + 209, + 183, + 167, + 165, + 49, + 163, + 27, + 52, + 32, + 222, + 185, + 230, + 6, + 7, + 178, + 175, + 38, + 114, + 6, + 62, + 172, + 86, + 165, + 83, + 250, + 46, + 46, + 170, + 228, + 19, + 179, + 187, + 238, + 208, + 125, + 85, + 242, + 176, + 126, + 42, + 154, + 37, + 133, + 169, + 18, + 4, + 179, + 33, + 247, + 184, + 47, + 35, + 164, + 235, + 137, + 9, + 146, + 179, + 219, + 27, + 11, + 111, + 72, + 109, + 11, + 250, + 250, + 241, + 240, + 131, + 190, + 60, + 54, + 185, + 112, + 53, + 13, + 60, + 101, + 224, + 142, + 71, + 141, + 32, + 196, + 210, + 74, + 215, + 32, + 144, + 17, + 240, + 209, + 222, + 186, + 189, + 167, + 211, + 141, + 70, + 247, + 139, + 70, + 128, + 227, + 27, + 84, + 39, + 205, + 227, + 138, + 119, + 170, + 25, + 191, + 15, + 222, + 195, + 212, + 59, + 38, + 48, + 103, + 68, + 186, + 64, + 172, + 152, + 239, + 61, + 211, + 249, + 67, + 197, + 192, + 92, + 198, + 80, + 0, + 236, + 167, + 109, + 238, + 129, + 216, + 80, + 1, + 102, + 178, + 166, + 7, + 16, + 11, + 242, + 10, + 247, + 20, + 236, + 244, + 94, + 138, + 141, + 161, + 7, + 234, + 67, + 89, + 50, + 235, + 188, + 183, + 155, + 75, + 65, + 64, + 228, + 218, + 208, + 61, + 118, + 92, + 112, + 69, + 73, + 219, + 58, + 101, + 107, + 41, + 151, + 252, + 194, + 212, + 48, + 48, + 13, + 132, + 136, + 107, + 45, + 92, + 204, + 252, + 215, + 94, + 131, + 117, + 102, + 200, + 96, + 245, + 145, + 102, + 234, + 88, + 130, + 57, + 106, + 45, + 81, + 52, + 226, + 153, + 234, + 234, + 127, + 65, + 40, + 88, + 100, + 178, + 138, + 160, + 242, + 189, + 230, + 147, + 107, + 212, + 105, + 89, + 107, + 18, + 219, + 248, + 30, + 231, + 53, + 29, + 227, + 23, + 178, + 164, + 131, + 110, + 156, + 58, + 66, + 111, + 228, + 2, + 108, + 100, + 153, + 223, + 221, + 15, + 185, + 43, + 82, + 232, + 1, + 220, + 250, + 51, + 217, + 0, + 119, + 94, + 134, + 79, + 124, + 11, + 44, + 210, + 13, + 87, + 68, + 161, + 169, + 81, + 7, + 150, + 221, + 86, + 83, + 78, + 239, + 133, + 176, + 214, + 107, + 206, + 194, + 222, + 27, + 5, + 218, + 65, + 92, + 83, + 86, + 204, + 249, + 117, + 207, + 187, + 114, + 90, + 81, + 204, + 111, + 9, + 80, + 147, + 230, + 9, + 128, + 165, + 3, + 13, + 254, + 215, + 139, + 35, + 164, + 240, + 29, + 17, + 67, + 149, + 50, + 214, + 26, + 144, + 105, + 250, + 29, + 22, + 204, + 42, + 13, + 114, + 55, + 144, + 25, + 190, + 241, + 116, + 243, + 113, + 139, + 171, + 131, + 231, + 149, + 196, + 179, + 131, + 149, + 78, + 167, + 212, + 73, + 95, + 33, + 208, + 122, + 173, + 56, + 21, + 218, + 11, + 157, + 84, + 162, + 87, + 3, + 155, + 5, + 139, + 146, + 166, + 46, + 44, + 204, + 55, + 103, + 87, + 209, + 77, + 36, + 115, + 58, + 158, + 17, + 28, + 219, + 135, + 101, + 80, + 107, + 192, + 52, + 236, + 227, + 40, + 145, + 207, + 43, + 26, + 211, + 249, + 205, + 163, + 227, + 129, + 210, + 88, + 101, + 130, + 99, + 149, + 124, + 100, + 113, + 196, + 99, + 155, + 159, + 199, + 170, + 146, + 166, + 232, + 245, + 43, + 2, + 211, + 226, + 230, + 169, + 141, + 22, + 220, + 100, + 116, + 197, + 199, + 1, + 152, + 147, + 220, + 150, + 73, + 91, + 241, + 128, + 241, + 201, + 73, + 112, + 2, + 68, + 90, + 122, + 232, + 16, + 147, + 133, + 5, + 216, + 150, + 171, + 253, + 2, + 221, + 62, + 177, + 143, + 183, + 175, + 4, + 75, + 83, + 128, + 14, + 146, + 199, + 177, + 251, + 74, + 147, + 52, + 145, + 228, + 50, + 28, + 54, + 32, + 206, + 152, + 63, + 81, + 91, + 215, + 25, + 135, + 178, + 31, + 253, + 175, + 36, + 61, + 25, + 104, + 202, + 149, + 2, + 188, + 48, + 128, + 107, + 45, + 102, + 240, + 184, + 140, + 242, + 94, + 204, + 211, + 19, + 1, + 45, + 27, + 56, + 51, + 126, + 54, + 36, + 145, + 102, + 227, + 140, + 119, + 68, + 58, + 194, + 80, + 60, + 108, + 111, + 112, + 228, + 139, + 242, + 30, + 83, + 143, + 8, + 51, + 3, + 143, + 47, + 135, + 172, + 226, + 92, + 109, + 219, + 198, + 145, + 244, + 156, + 42, + 36, + 158, + 75, + 50, + 52, + 156, + 104, + 87, + 152, + 56, + 59, + 200, + 186, + 110, + 124, + 2, + 67, + 120, + 204, + 200, + 140, + 86, + 1, + 5, + 92, + 216, + 255, + 65, + 94, + 32, + 241, + 233, + 180, + 91, + 191, + 179, + 75, + 192, + 244, + 66, + 203, + 49, + 93, + 230, + 55, + 146, + 167, + 177, + 8, + 19, + 33, + 125, + 127, + 127, + 209, + 70, + 147, + 233, + 191, + 157, + 175, + 34, + 12, + 60, + 99, + 91, + 17, + 207, + 75, + 20, + 100, + 162, + 18, + 41, + 213, + 178, + 112, + 228, + 245, + 180, + 25, + 103, + 216, + 60, + 226, + 100, + 193, + 69, + 127, + 6, + 249, + 178, + 153, + 88, + 25, + 148, + 149, + 151, + 102, + 188, + 37, + 37, + 57, + 101, + 35, + 204, + 182, + 3, + 47, + 96, + 64, + 249, + 219, + 142, + 152, + 79, + 95, + 84, + 193, + 192, + 62, + 176, + 133, + 41, + 202, + 156, + 126, + 243, + 11, + 75, + 105, + 160, + 192, + 170, + 234, + 208, + 182, + 94, + 1, + 84, + 76, + 36, + 1, + 183, + 137, + 133, + 36, + 25, + 160, + 231, + 245, + 121, + 12, + 125, + 81, + 50, + 89, + 27, + 245, + 104, + 153, + 174, + 194, + 39, + 128, + 183, + 73, + 205, + 63, + 120, + 220, + 37, + 238, + 200, + 4, + 105, + 120, + 220, + 237, + 214, + 23, + 37, + 6, + 78, + 71, + 153, + 168, + 18, + 205, + 54, + 145, + 182, + 111, + 112, + 73, + 143, + 13, + 220, + 246, + 11, + 118, + 182, + 45, + 237, + 18, + 103, + 105, + 247, + 93, + 67, + 181, + 31, + 31, + 90, + 24, + 192, + 22, + 93, + 43, + 121, + 36, + 196, + 76, + 33, + 1, + 60, + 154, + 40, + 185, + 199, + 113, + 153, + 196, + 254, + 33, + 168, + 167, + 19, + 218, + 58, + 159, + 40, + 231, + 123, + 200, + 102, + 245, + 192, + 240, + 24, + 75, + 239, + 192, + 209, + 116, + 36, + 39, + 122, + 187, + 219, + 86, + 75, + 137, + 224, + 16, + 88, + 23, + 75, + 46, + 151, + 126, + 40, + 136, + 103, + 95, + 137, + 31, + 105, + 2, + 175, + 142, + 33, + 195, + 182, + 236, + 143, + 149, + 220, + 76, + 60, + 232, + 168, + 8, + 237, + 170, + 234, + 220, + 156, + 191, + 211, + 18, + 84, + 133, + 52, + 189, + 92, + 16, + 192, + 82, + 99, + 102, + 102, + 161, + 24, + 227, + 189, + 188, + 135, + 79, + 183, + 63, + 121, + 31, + 134, + 77, + 86, + 165, + 69, + 213, + 18, + 134, + 1, + 248, + 188, + 159, + 185, + 241, + 31, + 50, + 188, + 210, + 71, + 63, + 192, + 112, + 85, + 25, + 16, + 233, + 150, + 191, + 88, + 16, + 50, + 30, + 113, + 206, + 162, + 30, + 201, + 97, + 175, + 83, + 155, + 71, + 110, + 253, + 4, + 122, + 177, + 53, + 86, + 81, + 28, + 121, + 106, + 54, + 74, + 115, + 235, + 213, + 197, + 21, + 70, + 21, + 50, + 108, + 63, + 137, + 253, + 203, + 72, + 19, + 151, + 79, + 187, + 98, + 110, + 252, + 255, + 80, + 63, + 67, + 87, + 133, + 210, + 246, + 22, + 163, + 118, + 152, + 155, + 120, + 229, + 230, + 60, + 179, + 29, + 248, + 94, + 161, + 96, + 155, + 156, + 229, + 154, + 203, + 142, + 126, + 67, + 63, + 85, + 9, + 19, + 201, + 8, + 123, + 107, + 241, + 71, + 248, + 229, + 91, + 192, + 70, + 166, + 1, + 229, + 154, + 129, + 143, + 1, + 255, + 13, + 247, + 170, + 46, + 254, + 21, + 226, + 149, + 111, + 142, + 158, + 53, + 190, + 209, + 126, + 10, + 220, + 98, + 4, + 216, + 231, + 131, + 137, + 215, + 219, + 90, + 169, + 229, + 201, + 165, + 156, + 93, + 69, + 171, + 67, + 87, + 168, + 66, + 45, + 80, + 135, + 247, + 251, + 120, + 215, + 26, + 57, + 188, + 224, + 154, + 58, + 217, + 74, + 141, + 81, + 150, + 191, + 42, + 72, + 108, + 29, + 173, + 192, + 224, + 115, + 243, + 45, + 247, + 96, + 175, + 202, + 159, + 178, + 21, + 2, + 232, + 29, + 6, + 154, + 221, + 161, + 58, + 36, + 163, + 10, + 80, + 251, + 227, + 172, + 195, + 161, + 11, + 183, + 58, + 205, + 11, + 73, + 40, + 222, + 171, + 39, + 34, + 98, + 237, + 11, + 146, + 52, + 120, + 26, + 219, + 245, + 178, + 202, + 51, + 241, + 64, + 218, + 98, + 251, + 15, + 23, + 217, + 131, + 68, + 238, + 150, + 109, + 163, + 165, + 2, + 68, + 184, + 251, + 109, + 137, + 94, + 162, + 151, + 120, + 240, + 159, + 28, + 114, + 246, + 39, + 26, + 255, + 41, + 185, + 53, + 118, + 39, + 76, + 69, + 113, + 170, + 83, + 145, + 95, + 169, + 250, + 21, + 100, + 94, + 22, + 44, + 138, + 54, + 33, + 60, + 194, + 214, + 162, + 243, + 116, + 210, + 116, + 102, + 226, + 120, + 139, + 196, + 44, + 137, + 106, + 51, + 194, + 199, + 203, + 2, + 139, + 152, + 24, + 67, + 59, + 43, + 174, + 204, + 166, + 43, + 154, + 55, + 89, + 245, + 46, + 15, + 172, + 221, + 143, + 55, + 226, + 216, + 175, + 20, + 183, + 0, + 10, + 197, + 39, + 191, + 170, + 33, + 96, + 169, + 93, + 200, + 207, + 133, + 11, + 48, + 211, + 18, + 197, + 176, + 49, + 218, + 64, + 179, + 28, + 191, + 219, + 15, + 128, + 218, + 45, + 147, + 114, + 13, + 22, + 209, + 183, + 222, + 179, + 8, + 171, + 25, + 10, + 87, + 191, + 121, + 191, + 197, + 68, + 182, + 135, + 199, + 169, + 81, + 218, + 206, + 37, + 112, + 84, + 253, + 65, + 45, + 137, + 211, + 201, + 219, + 156, + 102, + 105, + 26, + 222, + 151, + 195, + 110, + 73, + 39, + 173, + 53, + 129, + 120, + 225, + 205, + 204, + 93, + 240, + 87, + 246, + 84, + 67, + 133, + 88, + 92, + 68, + 240, + 230, + 247, + 186, + 176, + 27, + 254, + 68, + 168, + 250, + 46, + 33, + 166, + 156, + 222, + 84, + 239, + 37, + 213, + 59, + 198, + 181, + 110, + 75, + 176, + 208, + 140, + 131, + 92, + 21, + 249, + 205, + 173, + 74, + 213, + 233, + 220, + 169, + 73, + 101, + 76, + 56, + 241, + 216, + 135, + 192, + 80, + 241, + 217, + 154, + 195, + 181, + 218, + 120, + 2, + 140, + 196, + 18, + 109, + 207, + 38, + 108, + 161, + 220, + 1, + 167, + 134, + 138, + 11, + 26, + 250, + 201, + 220, + 3, + 85, + 183, + 46, + 49, + 228, + 49, + 206, + 246, + 253, + 179, + 106, + 172, + 177, + 151, + 121, + 132, + 190, + 160, + 52, + 253, + 13, + 182, + 242, + 166, + 217, + 167, + 196, + 67, + 10, + 209, + 62, + 86, + 94, + 56, + 86, + 109, + 225, + 129, + 193, + 164, + 39, + 89, + 210, + 47, + 35, + 15, + 175, + 11, + 195, + 219, + 238, + 250, + 65, + 71, + 89, + 193, + 249, + 13, + 230, + 226, + 192, + 58, + 24, + 226, + 163, + 251, + 73, + 241, + 68, + 17, + 72, + 49, + 165, + 95, + 43, + 22, + 240, + 236, + 63, + 171, + 208, + 200, + 138, + 235, + 148, + 36, + 177, + 62, + 19, + 223, + 254, + 9, + 47, + 85, + 231, + 129, + 134, + 79, + 7, + 17, + 5, + 127, + 141, + 61, + 7, + 124, + 120, + 67, + 37, + 202, + 96, + 181, + 239, + 128, + 121, + 111, + 44, + 5, + 251, + 1, + 152, + 24, + 39, + 185, + 88, + 98, + 13, + 59, + 166, + 186, + 189, + 128, + 140, + 236, + 254, + 66, + 103, + 47, + 228, + 193, + 212, + 61, + 100, + 200, + 239, + 249, + 170, + 224, + 244, + 92, + 233, + 221, + 8, + 87, + 175, + 39, + 232, + 25, + 105, + 78, + 194, + 65, + 184, + 15, + 57, + 161, + 58, + 248, + 17, + 40, + 207, + 33, + 15, + 62, + 89, + 93, + 161, + 50, + 106, + 60, + 77, + 101, + 167, + 56, + 55, + 212, + 113, + 191, + 71, + 38, + 86, + 151, + 118, + 85, + 99, + 24, + 233, + 116, + 131, + 152, + 173, + 11, + 22, + 158, + 141, + 196, + 87, + 92, + 68, + 122, + 118, + 2, + 181, + 230, + 25, + 175, + 241, + 62, + 43, + 18, + 5, + 177, + 49, + 53, + 240, + 236, + 92, + 197, + 189, + 222, + 90, + 50, + 45, + 31, + 111, + 142, + 49, + 45, + 61, + 232, + 45, + 195, + 33, + 233, + 5, + 244, + 179, + 83, + 238, + 25, + 190, + 176, + 255, + 160, + 126, + 119, + 210, + 14, + 10, + 172, + 243, + 206, + 153, + 175, + 196, + 36, + 105, + 137, + 167, + 181, + 186, + 23, + 198, + 195, + 117, + 161, + 60, + 38, + 15, + 169, + 41, + 226, + 26, + 53, + 113, + 175, + 238, + 166, + 244, + 14, + 118, + 96, + 73, + 194, + 232, + 188, + 114, + 233, + 95, + 241, + 171, + 106, + 114, + 99, + 45, + 188, + 222, + 164, + 143, + 80, + 251, + 186, + 75, + 187, + 191, + 88, + 77, + 237, + 191, + 240, + 74, + 199, + 184, + 1, + 132, + 25, + 218, + 84, + 14, + 76, + 87, + 132, + 214, + 161, + 163, + 254, + 90, + 48, + 238, + 24, + 254, + 108, + 230, + 98, + 150, + 52, + 225, + 162, + 214, + 34, + 46, + 61, + 218, + 248, + 183, + 0, + 138, + 78, + 87, + 101, + 17, + 217, + 152, + 193, + 252, + 242, + 188, + 197, + 60, + 28, + 71, + 191, + 117, + 161, + 35, + 242, + 195, + 18, + 199, + 73, + 56, + 9, + 249, + 148, + 91, + 184, + 96, + 197, + 33, + 149, + 52, + 31, + 5, + 185, + 32, + 127, + 0, + 190, + 158, + 18, + 40, + 236, + 243, + 251, + 24, + 154, + 170, + 8, + 168, + 55, + 229, + 48, + 62, + 130, + 131, + 253, + 108, + 33, + 220, + 64, + 105, + 5, + 23, + 176, + 7, + 210, + 136, + 248, + 209, + 242, + 147, + 192, + 97, + 39, + 156, + 74, + 129, + 250, + 86, + 166, + 55, + 153, + 122, + 65, + 25, + 66, + 137, + 201, + 54, + 131, + 74, + 242, + 200, + 158, + 90, + 139, + 122, + 72, + 37, + 54, + 39, + 219, + 182, + 184, + 32, + 51, + 151, + 42, + 163, + 190, + 27, + 236, + 244, + 154, + 50, + 122, + 149, + 135, + 159, + 170, + 91, + 196, + 145, + 233, + 252, + 4, + 181, + 177, + 117, + 128, + 110, + 134, + 246, + 250, + 71, + 181, + 58, + 189, + 33, + 132, + 67, + 88, + 93, + 248, + 251, + 143, + 44, + 208, + 133, + 162, + 65, + 221, + 64, + 10, + 225, + 104, + 187, + 12, + 223, + 142, + 239, + 28, + 125, + 17, + 38, + 170, + 14, + 86, + 240, + 139, + 28, + 145, + 114, + 173, + 154, + 7, + 134, + 54, + 225, + 117, + 61, + 170, + 196, + 54, + 255, + 132, + 8, + 72, + 37, + 143, + 205, + 133, + 120, + 190, + 132, + 133, + 104, + 12, + 217, + 51, + 13, + 160, + 206, + 87, + 117, + 204, + 92, + 83, + 240, + 79, + 32, + 180, + 91, + 63, + 195, + 199, + 45, + 160, + 19, + 165, + 194, + 11, + 130, + 45, + 208, + 149, + 75, + 143, + 85, + 81, + 37, + 25, + 53, + 133, + 36, + 191, + 24, + 6, + 144, + 241, + 172, + 85, + 0, + 135, + 228, + 123, + 9, + 38, + 238, + 15, + 11, + 160, + 179, + 201, + 208, + 177, + 56, + 98, + 225, + 218, + 135, + 37, + 148, + 151, + 37, + 186, + 42, + 89, + 240, + 58, + 45, + 219, + 240, + 98, + 119, + 95, + 167, + 94, + 88, + 177, + 61, + 43, + 56, + 224, + 253, + 199, + 234, + 47, + 122, + 97, + 52, + 114, + 133, + 145, + 101, + 91, + 211, + 166, + 37, + 142, + 30, + 177, + 73, + 69, + 54, + 93, + 97, + 151, + 129, + 74, + 21, + 137, + 205, + 204, + 121, + 87, + 121, + 198, + 182, + 192, + 212, + 133, + 87, + 26, + 165, + 27, + 78, + 102, + 88, + 102, + 0, + 212, + 133, + 82, + 79, + 149, + 197, + 162, + 9, + 40, + 13, + 123, + 156, + 108, + 56, + 135, + 77, + 109, + 125, + 198, + 3, + 59, + 112, + 17, + 190, + 231, + 203, + 101, + 181, + 132, + 39, + 232, + 214, + 197, + 244, + 81, + 183, + 191, + 64, + 15, + 233, + 33, + 81, + 176, + 241, + 39, + 210, + 100, + 235, + 158, + 104, + 80, + 111, + 197, + 39, + 157, + 1, + 53, + 54, + 120, + 4, + 216, + 220, + 120, + 210, + 83, + 77, + 61, + 134, + 135, + 183, + 255, + 142, + 14, + 110, + 165, + 32, + 203, + 200, + 245, + 234, + 185, + 121, + 215, + 45, + 187, + 249, + 143, + 77, + 57, + 153, + 9, + 228, + 185, + 216, + 170, + 231, + 68, + 9, + 219, + 150, + 62, + 166, + 110, + 186, + 148, + 98, + 46, + 134, + 226, + 145, + 210, + 31, + 27, + 9, + 178, + 199, + 189, + 240, + 191, + 76, + 185, + 169, + 129, + 38, + 149, + 70, + 123, + 201, + 209, + 103, + 215, + 220, + 126, + 58, + 188, + 21, + 56, + 238, + 182, + 77, + 3, + 202, + 99, + 228, + 87, + 197, + 106, + 158, + 162, + 69, + 34, + 99, + 90, + 79, + 209, + 105, + 50, + 248, + 87, + 8, + 157, + 206, + 3, + 176, + 194, + 217, + 110, + 233, + 77, + 52, + 156, + 225, + 106, + 206, + 249, + 103, + 58, + 185, + 202, + 15, + 214, + 135, + 190, + 60, + 194, + 16, + 214, + 202, + 181, + 30, + 247, + 91, + 103, + 158, + 22, + 115, + 224, + 235, + 19, + 128, + 120, + 66, + 217, + 31, + 89, + 121, + 192, + 240, + 90, + 116, + 70, + 30, + 159, + 11, + 106, + 122, + 150, + 128, + 104, + 89, + 164, + 190, + 178, + 114, + 186, + 151, + 15, + 76, + 72, + 122, + 126, + 153, + 248, + 246, + 236, + 90, + 153, + 92, + 229, + 50, + 148, + 103, + 108, + 117, + 247, + 189, + 136, + 77, + 185, + 11, + 26, + 13, + 148, + 252, + 8, + 159, + 67, + 119, + 226, + 239, + 193, + 195, + 146, + 95, + 28, + 79, + 167, + 128, + 225, + 146, + 172, + 22, + 72, + 8, + 17, + 124, + 215, + 21, + 99, + 130, + 117, + 137, + 237, + 156, + 89, + 126, + 92, + 40, + 33, + 103, + 0, + 75, + 100, + 226, + 103, + 245, + 129, + 44, + 229, + 122, + 17, + 128, + 127, + 32, + 196, + 215, + 59, + 25, + 229, + 144, + 175, + 113, + 199, + 244, + 234, + 58, + 99, + 112, + 64, + 245, + 175, + 127, + 223, + 143, + 112, + 236, + 47, + 91, + 53, + 72, + 32, + 85, + 252, + 187, + 119, + 121, + 121, + 168, + 199, + 16, + 176, + 47, + 69, + 49, + 120, + 229, + 165, + 205, + 117, + 86, + 222, + 169, + 170, + 38, + 191, + 36, + 229, + 35, + 139, + 87, + 19, + 247, + 124, + 132, + 213, + 104, + 97, + 44, + 166, + 110, + 49, + 252, + 201, + 127, + 42, + 64, + 45, + 128, + 224, + 13, + 146, + 85, + 130, + 207, + 226, + 170, + 55, + 225, + 100, + 162, + 129, + 190, + 202, + 15, + 254, + 127, + 72, + 64, + 23, + 227, + 130, + 10, + 86, + 183, + 81, + 143, + 191, + 189, + 45, + 146, + 149, + 77, + 226, + 53, + 84, + 47, + 136, + 170, + 41, + 186, + 87, + 188, + 186, + 159, + 239, + 172, + 79, + 156, + 179, + 69, + 243, + 92, + 139, + 201, + 163, + 166, + 171, + 43, + 104, + 31, + 200, + 227, + 131, + 233, + 141, + 53, + 246, + 37, + 255, + 233, + 112, + 32, + 118, + 147, + 37, + 253, + 67, + 172, + 24, + 157, + 47, + 165, + 49, + 16, + 142, + 31, + 148, + 206, + 110, + 64, + 178, + 92, + 34, + 245, + 91, + 186, + 193, + 126, + 206, + 229, + 122, + 108, + 166, + 221, + 74, + 206, + 211, + 216, + 131, + 239, + 26, + 60, + 5, + 174, + 108, + 30, + 171, + 168, + 78, + 161, + 186, + 153, + 188, + 168, + 192, + 155, + 224, + 57, + 42, + 244, + 124, + 155, + 185, + 58, + 214, + 191, + 159, + 70, + 178, + 118, + 116, + 63, + 153, + 95, + 79, + 208, + 183, + 157, + 76, + 51, + 122, + 246, + 122, + 31, + 108, + 61, + 7, + 52, + 250, + 249, + 163, + 3, + 1, + 254, + 161, + 179, + 120, + 106, + 25, + 2, + 161, + 168, + 181, + 184, + 34, + 184, + 165, + 160, + 57, + 150, + 21, + 134, + 62, + 180, + 159, + 254, + 175, + 193, + 152, + 104, + 243, + 205, + 45, + 45, + 13, + 56, + 148, + 176, + 98, + 70, + 74, + 147, + 248, + 236, + 121, + 99, + 58, + 241, + 111, + 142, + 235, + 79, + 59, + 81, + 124, + 13, + 13, + 157, + 176, + 235, + 209, + 95, + 193, + 206, + 125, + 116, + 9, + 80, + 243, + 153, + 209, + 163, + 94, + 79, + 124, + 164, + 71, + 80, + 69, + 49, + 203, + 78, + 236, + 187, + 130, + 70, + 198, + 252, + 32, + 143, + 71, + 77, + 66, + 210, + 100, + 130, + 12, + 213, + 210, + 0, + 166, + 217, + 168, + 46, + 129, + 163, + 207, + 126, + 88, + 71, + 254, + 17, + 94, + 28, + 132, + 105, + 240, + 77, + 197, + 15, + 216, + 26, + 202, + 134, + 162, + 202, + 254, + 24, + 246, + 134, + 155, + 248, + 136, + 53, + 67, + 29, + 255, + 185, + 200, + 239, + 213, + 2, + 107, + 22, + 63, + 21, + 237, + 24, + 29, + 141, + 29, + 37, + 13, + 26, + 160, + 221, + 107, + 5, + 183, + 62, + 221, + 109, + 224, + 33, + 224, + 253, + 129, + 221, + 138, + 195, + 93, + 191, + 222, + 79, + 110, + 255, + 50, + 26, + 211, + 172, + 73, + 33, + 192, + 49, + 48, + 25, + 103, + 129, + 184, + 124, + 54, + 64, + 98, + 254, + 92, + 120, + 110, + 113, + 21, + 174, + 43, + 238, + 36, + 185, + 75, + 240, + 57, + 185, + 183, + 8, + 92, + 212, + 83, + 143, + 142, + 66, + 208, + 162, + 44, + 19, + 170, + 186, + 183, + 93, + 143, + 141, + 169, + 32, + 79, + 123, + 102, + 120, + 7, + 66, + 28, + 254, + 45, + 4, + 10, + 58, + 132, + 170, + 183, + 41, + 218, + 225, + 219, + 122, + 227, + 240, + 58, + 153, + 130, + 4, + 77, + 244, + 125, + 104, + 57, + 194, + 133, + 1, + 31, + 189, + 219, + 118, + 203, + 190, + 212, + 221, + 93, + 135, + 115, + 80, + 189, + 246, + 25, + 100, + 23, + 46, + 96, + 9, + 114, + 85, + 42, + 16, + 107, + 143, + 224, + 148, + 223, + 105, + 88, + 129, + 115, + 136, + 46, + 83, + 141, + 117, + 139, + 248, + 99, + 75, + 189, + 36, + 24, + 157, + 97, + 86, + 205, + 246, + 224, + 240, + 247, + 232, + 87, + 166, + 184, + 1, + 87, + 161, + 117, + 107, + 3, + 0, + 250, + 215, + 158, + 69, + 133, + 239, + 86, + 192, + 135, + 183, + 5, + 135, + 162, + 143, + 252, + 32, + 29, + 233, + 60, + 190, + 59, + 244, + 139, + 46, + 77, + 249, + 225, + 63, + 223, + 155, + 75, + 241, + 206, + 167, + 67, + 28, + 139, + 45, + 125, + 19, + 62, + 182, + 83, + 37, + 251, + 57, + 69, + 129, + 130, + 108, + 64, + 180, + 116, + 130, + 153, + 216, + 206, + 128, + 14, + 33, + 80, + 206, + 21, + 60, + 118, + 36, + 236, + 233, + 206, + 244, + 75, + 163, + 243, + 70, + 43, + 130, + 0, + 80, + 183, + 16, + 179, + 58, + 212, + 117, + 124, + 43, + 105, + 64, + 70, + 13, + 34, + 192, + 214, + 21, + 106, + 97, + 96, + 140, + 218, + 236, + 141, + 73, + 123, + 17, + 175, + 143, + 137, + 242, + 218, + 247, + 56, + 14, + 57, + 78, + 232, + 42, + 123, + 159, + 132, + 9, + 10, + 117, + 13, + 40, + 88, + 134, + 88, + 26, + 0, + 241, + 70, + 171, + 100, + 90, + 36, + 42, + 230, + 71, + 126, + 27, + 40, + 216, + 223, + 118, + 230, + 52, + 58, + 56, + 2, + 148, + 136, + 28, + 208, + 66, + 225, + 142, + 82, + 24, + 39, + 86, + 250, + 72, + 21, + 79, + 214, + 54, + 74, + 66, + 138, + 133, + 86, + 108, + 123, + 183, + 37, + 199, + 39, + 233, + 57, + 232, + 86, + 131, + 84, + 216, + 44, + 138, + 82, + 66, + 89, + 188, + 123, + 8, + 187, + 80, + 174, + 207, + 106, + 203, + 170, + 232, + 230, + 199, + 30, + 150, + 8, + 118, + 31, + 156, + 74, + 204, + 19, + 193, + 106, + 212, + 100, + 76, + 148, + 43, + 209, + 253, + 130, + 168, + 184, + 83, + 255, + 245, + 165, + 236, + 12, + 45, + 74, + 45, + 99, + 178, + 188, + 79, + 89, + 196, + 174, + 220, + 14, + 125, + 40, + 20, + 214, + 103, + 27, + 246, + 9, + 199, + 0, + 102, + 142, + 25, + 14, + 207, + 8, + 136, + 121, + 221, + 204, + 98, + 133, + 125, + 174, + 79, + 94, + 252, + 33, + 193, + 37, + 245, + 233, + 196, + 167, + 183, + 222, + 31, + 121, + 157, + 66, + 157, + 33, + 204, + 246, + 180, + 201, + 18, + 185, + 98, + 242, + 24, + 102, + 130, + 187, + 219, + 28, + 8, + 136, + 86, + 227, + 88, + 146, + 229, + 155, + 117, + 230, + 168, + 99, + 69, + 241, + 217, + 88, + 240, + 68, + 80, + 69, + 58, + 47, + 231, + 217, + 79, + 82, + 78, + 8, + 235, + 84, + 141, + 41, + 63, + 197, + 241, + 11, + 234, + 28, + 23, + 206, + 217, + 153, + 69, + 101, + 213, + 46, + 78, + 29, + 96, + 132, + 53, + 159, + 124, + 147, + 20, + 27, + 202, + 4, + 156, + 153, + 87, + 81, + 127, + 41, + 214, + 48, + 192, + 39, + 56, + 99, + 220, + 181, + 252, + 233, + 207, + 27, + 111, + 109, + 117, + 244, + 215, + 222, + 232, + 162, + 204, + 225, + 71, + 10, + 128, + 49, + 246, + 73, + 162, + 9, + 115, + 70, + 29, + 149, + 48, + 91, + 164, + 139, + 216, + 124, + 169, + 227, + 246, + 175, + 74, + 0, + 133, + 210, + 14, + 226, + 25, + 135, + 96, + 127, + 19, + 225, + 231, + 12, + 2, + 118, + 232, + 44, + 153, + 163, + 140, + 192, + 210, + 157, + 177, + 241, + 97, + 155, + 30, + 227, + 214, + 50, + 30, + 118, + 59, + 91, + 201, + 192, + 25, + 114, + 120, + 16, + 43, + 170, + 242, + 178, + 7, + 13, + 158, + 227, + 12, + 2, + 147, + 217, + 156, + 233, + 201, + 106, + 199, + 178, + 182, + 167, + 144, + 137, + 133, + 27, + 150, + 97, + 36, + 206, + 43, + 28, + 105, + 238, + 118, + 244, + 12, + 249, + 27, + 170, + 31, + 72, + 175, + 17, + 65, + 147, + 114, + 189, + 92, + 123, + 178, + 3, + 20, + 223, + 237, + 24, + 165, + 97, + 110, + 152, + 121, + 227, + 178, + 198, + 5, + 44, + 171, + 77, + 30, + 59, + 25, + 230, + 44, + 215, + 189, + 172, + 158, + 211, + 37, + 92, + 138, + 189, + 24, + 127, + 172, + 163, + 172, + 243, + 138, + 191, + 109, + 28, + 205, + 233, + 170, + 51, + 223, + 165, + 171, + 249, + 104, + 157, + 179, + 145, + 163, + 245, + 128, + 136, + 243, + 67, + 11, + 116, + 231, + 147, + 222, + 211, + 27, + 122, + 174, + 163, + 159, + 59, + 80, + 131, + 219, + 43, + 123, + 11, + 217, + 240, + 83, + 62, + 167, + 112, + 234, + 190, + 113, + 129, + 45, + 115, + 44, + 128, + 95, + 142, + 75, + 238, + 151, + 65, + 221, + 202, + 8, + 132, + 113, + 101, + 157, + 163, + 237, + 76, + 188, + 242, + 242, + 129, + 160, + 222, + 123, + 28, + 53, + 12, + 93, + 121, + 160, + 226, + 201, + 174, + 243, + 204, + 16, + 82, + 138, + 70, + 174, + 205, + 158, + 56, + 141, + 93, + 253, + 79, + 150, + 143, + 205, + 244, + 249, + 42, + 25, + 252, + 47, + 185, + 146, + 155, + 155, + 48, + 165, + 182, + 152, + 255, + 254, + 80, + 122, + 211, + 77, + 147, + 203, + 180, + 139, + 119, + 155, + 193, + 129, + 242, + 180, + 25, + 253, + 140, + 106, + 150, + 252, + 150, + 192, + 228, + 210, + 8, + 99, + 32, + 67, + 208, + 188, + 174, + 19, + 60, + 107, + 23, + 246, + 229, + 254, + 19, + 180, + 42, + 238, + 168, + 39, + 98, + 238, + 247, + 206, + 137, + 150, + 26, + 252, + 148, + 60, + 213, + 62, + 155, + 148, + 52, + 50, + 230, + 77, + 246, + 88, + 155, + 87, + 162, + 4, + 161, + 110, + 255, + 69, + 95, + 39, + 192, + 158, + 171, + 254, + 235, + 191, + 34, + 171, + 51, + 112, + 189, + 254, + 232, + 209, + 73, + 225, + 119, + 25, + 95, + 226, + 217, + 188, + 168, + 44, + 114, + 221, + 42, + 124, + 151, + 76, + 130, + 165, + 229, + 152, + 136, + 178, + 12, + 131, + 162, + 27, + 156, + 103, + 97, + 242, + 145, + 124, + 59, + 182, + 47, + 220, + 31, + 57, + 112, + 96, + 108, + 145, + 88, + 121, + 123, + 149, + 205, + 23, + 152, + 41, + 233, + 159, + 248, + 69, + 29, + 228, + 160, + 68, + 131, + 155, + 118, + 72, + 235, + 25, + 50, + 149, + 61, + 114, + 227, + 85, + 71, + 96, + 101, + 228, + 12, + 52, + 83, + 232, + 25, + 53, + 82, + 255, + 64, + 13, + 88, + 119, + 25, + 92, + 254, + 14, + 137, + 141, + 235, + 222, + 135, + 197, + 213, + 186, + 196, + 45, + 28, + 118, + 113, + 22, + 199, + 98, + 136, + 46, + 185, + 114, + 196, + 23, + 154, + 208, + 88, + 201, + 26, + 202, + 118, + 192, + 244, + 147, + 41, + 166, + 146, + 72, + 158, + 29, + 235, + 55, + 204, + 253, + 122, + 46, + 70, + 251, + 97, + 35, + 75, + 125, + 26, + 132, + 109, + 197, + 10, + 67, + 223, + 49, + 82, + 100, + 136, + 209, + 37, + 237, + 60, + 71, + 230, + 20, + 120, + 80, + 93, + 144, + 121, + 36, + 199, + 133, + 188, + 102, + 106, + 85, + 1, + 184, + 208, + 226, + 227, + 43, + 135, + 98, + 98, + 233, + 25, + 216, + 166, + 67, + 141, + 153, + 5, + 69, + 54, + 193, + 142, + 12, + 62, + 25, + 95, + 12, + 49, + 207, + 82, + 18, + 73, + 154, + 157, + 201, + 167, + 77, + 71, + 135, + 123, + 50, + 206, + 41, + 99, + 236, + 41, + 18, + 215, + 11, + 82, + 219, + 242, + 1, + 164, + 137, + 49, + 247, + 64, + 167, + 181, + 70, + 139, + 243, + 243, + 210, + 81, + 35, + 187, + 161, + 150, + 42, + 210, + 7, + 189, + 178, + 9, + 74, + 8, + 232, + 72, + 137, + 146, + 11, + 253, + 225, + 53, + 69, + 10, + 1, + 134, + 71, + 146, + 218, + 124, + 183, + 7, + 227, + 144, + 223, + 208, + 245, + 103, + 63, + 58, + 129, + 86, + 145, + 8, + 226, + 34, + 225, + 201, + 198, + 110, + 249, + 161, + 84, + 113, + 249, + 149, + 161, + 158, + 101, + 82, + 144, + 215, + 9, + 171, + 154, + 6, + 102, + 123, + 109, + 140, + 23, + 75, + 200, + 199, + 216, + 206, + 68, + 6, + 0, + 45, + 78, + 238, + 182, + 52, + 109, + 141, + 151, + 83, + 17, + 111, + 136, + 160, + 38, + 121, + 55, + 70, + 213, + 3, + 255, + 90, + 158, + 116, + 109, + 180, + 60, + 92, + 92, + 78, + 72, + 147, + 126, + 79, + 15, + 252, + 210, + 183, + 13, + 68, + 178, + 150, + 58, + 160, + 63, + 83, + 252, + 222, + 103, + 24, + 173, + 199, + 144, + 130, + 101, + 224, + 164, + 149, + 48, + 132, + 155, + 27, + 202, + 106, + 164, + 239, + 107, + 195, + 153, + 19, + 132, + 160, + 46, + 107, + 153, + 61, + 99, + 143, + 39, + 138, + 194, + 78, + 210, + 197, + 123, + 198, + 225, + 68, + 53, + 185, + 107, + 62, + 237, + 172, + 144, + 191, + 158, + 11, + 251, + 153, + 90, + 166, + 50, + 125, + 208, + 153, + 61, + 227, + 244, + 53, + 50, + 173, + 186, + 192, + 75, + 144, + 77, + 216, + 241, + 253, + 146, + 209, + 213, + 110, + 21, + 234, + 198, + 10, + 67, + 221, + 149, + 253, + 37, + 130, + 33, + 218, + 15, + 92, + 144, + 53, + 182, + 110, + 120, + 114, + 111, + 80, + 75, + 11, + 45, + 213, + 59, + 156, + 159, + 172, + 206, + 95, + 178, + 187, + 83, + 90, + 125, + 241, + 181, + 72, + 165, + 118, + 137, + 11, + 73, + 173, + 137, + 234, + 195, + 106, + 167, + 152, + 192, + 217, + 55, + 3, + 51, + 207, + 148, + 5, + 120, + 254, + 57, + 148, + 27, + 8, + 113, + 247, + 217, + 147, + 59, + 120, + 148, + 186, + 37, + 252, + 95, + 211, + 31, + 245, + 210, + 217, + 217, + 222, + 168, + 175, + 17, + 24, + 225, + 104, + 25, + 162, + 186, + 86, + 145, + 96, + 48, + 243, + 0, + 169, + 43, + 224, + 173, + 192, + 183, + 190, + 138, + 13, + 97, + 150, + 253, + 72, + 100, + 14, + 31, + 251, + 114, + 87, + 234, + 111, + 236, + 42, + 11, + 14, + 148, + 219, + 199, + 133, + 43, + 83, + 49, + 197, + 177, + 116, + 55, + 52, + 195, + 226, + 153, + 149, + 192, + 158, + 130, + 150, + 87, + 242, + 223, + 171, + 68, + 233, + 105, + 149, + 64, + 26, + 59, + 57, + 48, + 85, + 50, + 158, + 203, + 166, + 165, + 16, + 63, + 176, + 90, + 236, + 155, + 142, + 230, + 62, + 234, + 50, + 253, + 193, + 21, + 247, + 148, + 8, + 144, + 213, + 79, + 194, + 221, + 168, + 112, + 97, + 79, + 34, + 175, + 0, + 115, + 27, + 119, + 116, + 94, + 222, + 181, + 121, + 42, + 250, + 144, + 238, + 186, + 97, + 107, + 238, + 66, + 119, + 140, + 146, + 42, + 5, + 152, + 233, + 177, + 85, + 247, + 173, + 236, + 33, + 89, + 111, + 59, + 101, + 215, + 157, + 30, + 102, + 193, + 31, + 47, + 110, + 242, + 140, + 129, + 25, + 242, + 118, + 210, + 240, + 241, + 65, + 75, + 45, + 4, + 154, + 72, + 192, + 218, + 212, + 76, + 50, + 147, + 243, + 69, + 12, + 71, + 159, + 157, + 113, + 113, + 80, + 197, + 204, + 179, + 253, + 89, + 70, + 3, + 228, + 60, + 31, + 72, + 222, + 96, + 46, + 248, + 52, + 215, + 210, + 252, + 39, + 24, + 157, + 194, + 161, + 135, + 132, + 182, + 8, + 19, + 165, + 209, + 111, + 15, + 245, + 214, + 212, + 157, + 220, + 125, + 11, + 92, + 39, + 211, + 221, + 41, + 150, + 146, + 26, + 80, + 223, + 201, + 168, + 139, + 95, + 215, + 184, + 20, + 144, + 159, + 149, + 99, + 182, + 147, + 140, + 235, + 155, + 61, + 174, + 124, + 190, + 213, + 193, + 147, + 61, + 97, + 230, + 154, + 148, + 78, + 225, + 7, + 223, + 52, + 40, + 19, + 188, + 164, + 63, + 217, + 91, + 85, + 231, + 48, + 224, + 74, + 177, + 127, + 80, + 58, + 221, + 54, + 198, + 182, + 2, + 36, + 64, + 210, + 0, + 22, + 117, + 109, + 41, + 85, + 102, + 238, + 221, + 71, + 211, + 251, + 153, + 188, + 35, + 244, + 100, + 223, + 236, + 45, + 204, + 49, + 208, + 97, + 252, + 239, + 250, + 247, + 224, + 194, + 73, + 201, + 81, + 148, + 85, + 242, + 205, + 209, + 113, + 158, + 5, + 35, + 116, + 67, + 172, + 74, + 75, + 229, + 157, + 252, + 32, + 48, + 209, + 24, + 69, + 71, + 9, + 192, + 215, + 49, + 250, + 47, + 65, + 42, + 107, + 188, + 155, + 179, + 144, + 250, + 85, + 113, + 160, + 176, + 130, + 204, + 126, + 75, + 11, + 165, + 92, + 162, + 11, + 204, + 129, + 224, + 63, + 81, + 41, + 71, + 223, + 209, + 68, + 1, + 251, + 178, + 225, + 40, + 194, + 110, + 116, + 194, + 66, + 196, + 252, + 96, + 229, + 17, + 106, + 91, + 248, + 159, + 122, + 134, + 99, + 111, + 233, + 121, + 176, + 40, + 223, + 159, + 74, + 71, + 122, + 95, + 151, + 199, + 109, + 140, + 228, + 147, + 188, + 81, + 101, + 185, + 66, + 179, + 212, + 8, + 33, + 69, + 204, + 195, + 197, + 127, + 14, + 78, + 201, + 149, + 215, + 86, + 13, + 150, + 61, + 248, + 94, + 179, + 107, + 42, + 111, + 79, + 239, + 237, + 212, + 77, + 244, + 220, + 101, + 210, + 198, + 181, + 181, + 104, + 136, + 107, + 26, + 8, + 3, + 136, + 247, + 73, + 141, + 176, + 39, + 1, + 217, + 158, + 5, + 109, + 251, + 251, + 238, + 7, + 107, + 88, + 198, + 118, + 26, + 22, + 37, + 73, + 71, + 190, + 11, + 61, + 17, + 220, + 162, + 242, + 226, + 179, + 41, + 123, + 82, + 110, + 83, + 87, + 43, + 20, + 245, + 150, + 110, + 185, + 193, + 134, + 207, + 197, + 167, + 181, + 65, + 248, + 224, + 22, + 68, + 174, + 118, + 180, + 168, + 46, + 9, + 237, + 233, + 130, + 84, + 210, + 236, + 212, + 217, + 219, + 184, + 68, + 67, + 159, + 253, + 191, + 181, + 118, + 24, + 57, + 15, + 77, + 33, + 72, + 39, + 73, + 232, + 150, + 114, + 162, + 57, + 189, + 96, + 68, + 152, + 46, + 59, + 207, + 135, + 72, + 146, + 115, + 97, + 185, + 233, + 194, + 133, + 214, + 245, + 127, + 109, + 79, + 143, + 85, + 110, + 42, + 155, + 195, + 92, + 167, + 58, + 64, + 120, + 236, + 25, + 237, + 118, + 249, + 237, + 83, + 203, + 104, + 74, + 247, + 3, + 91, + 133, + 117, + 164, + 201, + 154, + 216, + 61, + 255, + 175, + 94, + 69, + 237, + 56, + 100, + 196, + 230, + 192, + 178, + 148, + 194, + 171, + 245, + 105, + 39, + 151, + 146, + 50, + 65, + 252, + 172, + 215, + 194, + 12, + 56, + 217, + 92, + 140, + 115, + 213, + 62, + 80, + 190, + 78, + 30, + 48, + 42, + 244, + 228, + 70, + 137, + 209, + 248, + 252, + 23, + 225, + 55, + 237, + 52, + 197, + 46, + 119, + 223, + 180, + 157, + 52, + 251, + 225, + 141, + 119, + 142, + 37, + 132, + 17, + 18, + 239, + 147, + 98, + 11, + 168, + 15, + 158, + 129, + 39, + 123, + 38, + 39, + 152, + 48, + 74, + 110, + 205, + 76, + 173, + 221, + 191, + 17, + 167, + 14, + 54, + 180, + 221, + 96, + 236, + 215, + 242, + 75, + 181, + 99, + 210, + 64, + 60, + 186, + 17, + 82, + 20, + 22, + 233, + 83, + 32, + 132, + 108, + 24, + 176, + 150, + 10, + 223, + 144, + 253, + 209, + 180, + 49, + 164, + 215, + 44, + 155, + 37, + 166, + 0, + 118, + 255, + 94, + 11, + 1, + 34, + 238, + 157, + 174, + 71, + 5, + 194, + 161, + 162, + 48, + 210, + 164, + 4, + 167, + 180, + 33, + 86, + 215, + 74, + 90, + 53, + 50, + 20, + 49, + 245, + 143, + 3, + 177, + 0, + 233, + 244, + 242, + 11, + 197, + 94, + 241, + 16, + 170, + 156, + 167, + 83, + 25, + 101, + 10, + 223, + 78, + 91, + 59, + 55, + 213, + 32, + 191, + 210, + 134, + 132, + 34, + 55, + 145, + 124, + 119, + 49, + 182, + 220, + 229, + 125, + 122, + 17, + 243, + 173, + 50, + 244, + 138, + 125, + 208, + 222, + 64, + 93, + 26, + 238, + 64, + 247, + 103, + 45, + 196, + 141, + 154, + 239, + 84, + 108, + 199, + 108, + 177, + 20, + 122, + 44, + 9, + 147, + 153, + 141, + 232, + 230, + 214, + 110, + 218, + 86, + 54, + 101, + 203, + 140, + 104, + 21, + 53, + 28, + 92, + 245, + 72, + 240, + 210, + 196, + 236, + 40, + 227, + 226, + 167, + 231, + 103, + 112, + 59, + 2, + 13, + 191, + 148, + 24, + 221, + 233, + 140, + 150, + 73, + 139, + 17, + 76, + 133, + 159, + 205, + 124, + 191, + 146, + 212, + 34, + 231, + 22, + 208, + 119, + 226, + 253, + 230, + 139, + 125, + 102, + 65, + 3, + 6, + 210, + 107, + 38, + 92, + 129, + 38, + 221, + 243, + 5, + 242, + 225, + 80, + 135, + 147, + 46, + 101, + 51, + 138, + 80, + 66, + 158, + 211, + 201, + 81, + 190, + 110, + 38, + 104, + 217, + 80, + 5, + 198, + 83, + 21, + 82, + 248, + 130, + 139, + 193, + 16, + 66, + 54, + 182, + 198, + 7, + 60, + 48, + 175, + 207, + 35, + 183, + 87, + 19, + 29, + 27, + 82, + 188, + 3, + 175, + 16, + 31, + 177, + 245, + 185, + 176, + 126, + 11, + 70, + 161, + 190, + 74, + 160, + 161, + 252, + 20, + 65, + 218, + 159, + 134, + 75, + 51, + 128, + 227, + 108, + 196, + 135, + 215, + 200, + 196, + 17, + 204, + 43, + 219, + 103, + 8, + 96, + 57, + 66, + 165, + 222, + 117, + 95, + 219, + 38, + 6, + 214, + 193, + 103, + 153, + 176, + 111, + 121, + 39, + 254, + 85, + 249, + 137, + 239, + 150, + 211, + 93, + 27, + 114, + 190, + 68, + 155, + 110, + 36, + 163, + 164, + 148, + 99, + 252, + 50, + 108, + 94, + 151, + 211, + 56, + 139, + 159, + 247, + 132, + 107, + 224, + 25, + 167, + 7, + 13, + 107, + 126, + 152, + 41, + 237, + 24, + 124, + 39, + 2, + 197, + 0, + 70, + 237, + 80, + 233, + 66, + 135, + 210, + 118, + 117, + 127, + 74, + 41, + 134, + 221, + 91, + 218, + 187, + 195, + 201, + 57, + 1, + 142, + 142, + 113, + 14, + 67, + 99, + 8, + 122, + 254, + 72, + 54, + 140, + 37, + 6, + 184, + 82, + 135, + 85, + 98, + 17, + 218, + 156, + 133, + 41, + 79, + 41, + 255, + 41, + 200, + 170, + 131, + 37, + 20, + 186, + 20, + 102, + 69, + 128, + 175, + 242, + 218, + 206, + 11, + 152, + 200, + 248, + 74, + 34, + 123, + 152, + 145, + 32, + 205, + 245, + 141, + 243, + 182, + 192, + 145, + 159, + 241, + 182, + 215, + 215, + 57, + 127, + 172, + 15, + 76, + 108, + 121, + 193, + 60, + 213, + 19, + 52, + 140, + 2, + 123, + 150, + 78, + 21, + 186, + 98, + 5, + 108, + 227, + 132, + 184, + 41, + 208, + 28, + 0, + 115, + 164, + 64, + 1, + 139, + 128, + 84, + 98, + 22, + 254, + 127, + 225, + 101, + 189, + 214, + 116, + 123, + 34, + 219, + 17, + 40, + 49, + 211, + 98, + 187, + 124, + 173, + 236, + 95, + 98, + 59, + 169, + 224, + 25, + 69, + 160, + 127, + 34, + 228, + 23, + 51, + 228, + 175, + 201, + 75, + 189, + 222, + 129, + 117, + 175, + 176, + 20, + 246, + 32, + 141, + 185, + 108, + 104, + 106, + 219, + 45, + 160, + 249, + 84, + 41, + 101, + 219, + 162, + 168, + 152, + 82, + 163, + 27, + 39, + 87, + 181, + 191, + 44, + 237, + 53, + 43, + 230, + 233, + 113, + 206, + 60, + 241, + 146, + 58, + 49, + 189, + 254, + 5, + 176, + 156, + 52, + 131, + 248, + 104, + 55, + 223, + 242, + 13, + 82, + 3, + 134, + 18, + 52, + 72, + 60, + 215, + 254, + 64, + 241, + 233, + 102, + 6, + 97, + 208, + 128, + 225, + 247, + 191, + 225, + 96, + 178, + 63, + 3, + 112, + 242, + 90, + 253, + 254, + 27, + 97, + 22, + 229, + 75, + 74, + 48, + 254, + 96, + 169, + 58, + 223, + 31, + 188, + 80, + 106, + 182, + 40, + 41, + 211, + 53, + 75, + 164, + 198, + 134, + 48, + 39, + 241, + 126, + 225, + 109, + 10, + 33, + 229, + 56, + 227, + 218, + 253, + 157, + 116, + 56, + 100, + 161, + 189, + 168, + 177, + 241, + 187, + 244, + 16, + 237, + 245, + 188, + 104, + 239, + 220, + 248, + 242, + 115, + 28, + 130, + 200, + 87, + 61, + 75, + 170, + 174, + 132, + 16, + 245, + 164, + 44, + 240, + 255, + 14, + 186, + 42, + 0, + 79, + 66, + 119, + 55, + 22, + 60, + 145, + 175, + 168, + 214, + 60, + 36, + 127, + 197, + 88, + 67, + 197, + 103, + 230, + 106, + 206, + 254, + 15, + 20, + 58, + 5, + 65, + 105, + 75, + 64, + 104, + 4, + 105, + 155, + 68, + 183, + 15, + 220, + 232, + 213, + 210, + 28, + 249, + 147, + 24, + 18, + 202, + 43, + 87, + 88, + 70, + 130, + 136, + 95, + 39, + 167, + 128, + 163, + 209, + 84, + 87, + 85, + 21, + 205, + 90, + 97, + 33, + 173, + 79, + 151, + 147, + 148, + 216, + 86, + 90, + 18, + 80, + 96, + 28, + 227, + 241, + 132, + 231, + 108, + 117, + 166, + 168, + 51, + 228, + 35, + 112, + 57, + 191, + 173, + 55, + 221, + 39, + 10, + 198, + 99, + 137, + 14, + 8, + 131, + 131, + 196, + 145, + 195, + 31, + 73, + 250, + 189, + 16, + 15, + 65, + 109, + 96, + 194, + 19, + 102, + 222, + 152, + 65, + 113, + 234, + 231, + 129, + 198, + 213, + 161, + 221, + 108, + 132, + 82, + 252, + 51, + 246, + 163, + 204, + 193, + 117, + 174, + 135, + 41, + 143, + 212, + 2, + 135, + 63, + 21, + 53, + 251, + 68, + 183, + 215, + 7, + 95, + 240, + 239, + 145, + 39, + 107, + 120, + 253, + 155, + 103, + 220, + 228, + 133, + 199, + 52, + 19, + 66, + 141, + 251, + 90, + 14, + 19, + 45, + 15, + 252, + 198, + 189, + 26, + 135, + 15, + 75, + 17, + 236, + 135, + 107, + 151, + 91, + 223, + 40, + 232, + 172, + 98, + 28, + 17, + 122, + 142, + 158, + 225, + 206, + 158, + 188, + 228, + 100, + 200, + 244, + 241, + 102, + 23, + 73, + 245, + 251, + 106, + 247, + 73, + 227, + 24, + 155, + 177, + 49, + 245, + 237, + 103, + 96, + 65, + 93, + 114, + 72, + 14, + 43, + 195, + 223, + 223, + 126, + 12, + 164, + 7, + 232, + 99, + 74, + 214, + 129, + 140, + 175, + 119, + 228, + 165, + 199, + 91, + 182, + 72, + 125, + 139, + 197, + 7, + 22, + 157, + 189, + 46, + 178, + 7, + 58, + 25, + 33, + 160, + 238, + 29, + 210, + 147, + 95, + 248, + 121, + 237, + 229, + 18, + 150, + 250, + 9, + 167, + 99, + 17, + 33, + 20, + 192, + 110, + 151, + 155, + 233, + 251, + 88, + 242, + 141, + 196, + 188, + 70, + 69, + 144, + 189, + 117, + 233, + 167, + 199, + 109, + 2, + 117, + 246, + 37, + 101, + 173, + 167, + 193, + 167, + 27, + 32, + 108, + 200, + 120, + 17, + 130, + 244, + 13, + 172, + 100, + 181, + 137, + 38, + 255, + 115, + 223, + 107, + 227, + 69, + 171, + 46, + 31, + 103, + 72, + 206, + 229, + 12, + 118, + 76, + 31, + 245, + 184, + 94, + 143, + 141, + 1, + 207, + 213, + 63, + 173, + 186, + 9, + 215, + 196, + 26, + 91, + 118, + 253, + 24, + 84, + 10, + 132, + 32, + 199, + 213, + 40, + 123, + 24, + 22, + 3, + 48, + 203, + 207, + 217, + 152, + 104, + 2, + 141, + 107, + 191, + 176, + 9, + 90, + 163, + 79, + 172, + 185, + 61, + 39, + 185, + 72, + 223, + 241, + 37, + 6, + 100, + 235, + 124, + 237, + 173, + 202, + 36, + 95, + 145, + 99, + 111, + 214, + 1, + 33, + 85, + 100, + 26, + 50, + 152, + 79, + 126, + 63, + 84, + 184, + 7, + 190, + 164, + 6, + 40, + 239, + 181, + 80, + 10, + 194, + 125, + 162, + 166, + 195, + 169, + 217, + 150, + 207, + 112, + 22, + 126, + 212, + 113, + 83, + 196, + 178, + 96, + 79, + 20, + 10, + 101, + 19, + 144, + 119, + 1, + 86, + 252, + 238, + 59, + 242, + 158, + 245, + 254, + 181, + 7, + 105, + 161, + 170, + 13, + 210, + 11, + 111, + 51, + 137, + 73, + 195, + 100, + 212, + 31, + 115, + 9, + 211, + 80, + 62, + 231, + 239, + 185, + 167, + 99, + 103, + 97, + 15, + 9, + 129, + 70, + 210, + 21, + 61, + 221, + 166, + 149, + 103, + 123, + 164, + 173, + 38, + 74, + 228, + 140, + 50, + 44, + 219, + 209, + 134, + 45, + 146, + 124, + 198, + 232, + 218, + 112, + 83, + 124, + 101, + 2, + 230, + 33, + 96, + 25, + 85, + 40, + 67, + 77, + 179, + 105, + 248, + 115, + 211, + 166, + 114, + 72, + 198, + 130, + 51, + 55, + 62, + 228, + 82, + 195, + 174, + 94, + 123, + 33, + 215, + 220, + 9, + 53, + 153, + 127, + 2, + 212, + 136, + 160, + 159, + 176, + 1, + 205, + 244, + 134, + 130, + 103, + 47, + 192, + 136, + 190, + 131, + 10, + 145, + 190, + 119, + 97, + 43, + 3, + 143, + 18, + 155, + 161, + 224, + 186, + 81, + 40, + 8, + 60, + 247, + 64, + 4, + 131, + 242, + 241, + 233, + 176, + 83, + 101, + 208, + 174, + 90, + 53, + 180, + 119, + 171, + 193, + 215, + 138, + 191, + 23, + 197, + 34, + 239, + 254, + 44, + 18, + 40, + 193, + 151, + 87, + 52, + 29, + 7, + 83, + 1, + 9, + 64, + 194, + 20, + 147, + 111, + 121, + 85, + 237, + 87, + 9, + 40, + 141, + 74, + 200, + 154, + 120, + 171, + 3, + 231, + 31, + 231, + 26, + 67, + 159, + 117, + 112, + 74, + 93, + 169, + 185, + 174, + 155, + 179, + 102, + 153, + 113, + 230, + 221, + 206, + 68, + 139, + 5, + 169, + 225, + 186, + 90, + 99, + 134, + 189, + 226, + 100, + 212, + 109, + 30, + 154, + 114, + 71, + 29, + 242, + 210, + 106, + 24, + 20, + 151, + 149, + 182, + 57, + 80, + 230, + 95, + 75, + 106, + 218, + 82, + 107, + 99, + 82, + 83, + 176, + 73, + 11, + 74, + 195, + 92, + 120, + 88, + 195, + 61, + 248, + 111, + 76, + 198, + 224, + 34, + 156, + 114, + 211, + 78, + 137, + 250, + 17, + 45, + 23, + 15, + 138, + 61, + 101, + 249, + 131, + 126, + 18, + 82, + 182, + 119, + 131, + 167, + 80, + 82, + 122, + 9, + 172, + 90, + 13, + 183, + 60, + 147, + 123, + 20, + 92, + 172, + 54, + 221, + 166, + 165, + 119, + 15, + 216, + 204, + 4, + 92, + 86, + 57, + 244, + 184, + 25, + 155, + 115, + 91, + 210, + 169, + 121, + 110, + 253, + 139, + 194, + 194, + 3, + 46, + 1, + 31, + 69, + 156, + 212, + 74, + 22, + 138, + 22, + 172, + 85, + 52, + 157, + 252, + 62, + 156, + 132, + 22, + 185, + 248, + 221, + 85, + 43, + 64, + 49, + 220, + 128, + 212, + 164, + 125, + 192, + 250, + 131, + 221, + 76, + 48, + 36, + 172, + 216, + 244, + 52, + 69, + 31, + 169, + 177, + 179, + 40, + 146, + 118, + 59, + 15, + 134, + 20, + 85, + 254, + 249, + 143, + 19, + 200, + 83, + 47, + 148, + 160, + 184, + 209, + 60, + 30, + 186, + 4, + 51, + 188, + 211, + 171, + 90, + 35, + 127, + 158, + 29, + 108, + 1, + 169, + 108, + 131, + 95, + 73, + 49, + 5, + 23, + 177, + 54, + 82, + 180, + 212, + 188, + 93, + 180, + 195, + 80, + 73, + 171, + 126, + 5, + 222, + 241, + 197, + 176, + 124, + 189, + 106, + 36, + 26, + 178, + 68, + 151, + 63, + 129, + 187, + 236, + 104, + 61, + 243, + 64, + 202, + 250, + 163, + 128, + 248, + 29, + 16, + 65, + 191, + 130, + 88, + 158, + 125, + 227, + 245, + 155, + 109, + 164, + 170, + 99, + 163, + 126, + 124, + 5, + 77, + 253, + 212, + 240, + 54, + 68, + 125, + 54, + 25, + 14, + 166, + 95, + 98, + 225, + 50, + 66, + 168, + 157, + 66, + 157, + 19, + 25, + 242, + 211, + 75, + 204, + 35, + 120, + 2, + 24, + 168, + 45, + 138, + 1, + 121, + 3, + 148, + 138, + 231, + 75, + 203, + 64, + 116, + 3, + 110, + 76, + 218, + 188, + 204, + 74, + 90, + 21, + 7, + 70, + 46, + 164, + 15, + 105, + 89, + 197, + 172, + 203, + 44, + 123, + 228, + 179, + 179, + 155, + 28, + 215, + 124, + 148, + 110, + 38, + 91, + 232, + 137, + 140, + 57, + 224, + 224, + 100, + 235, + 94, + 87, + 13, + 212, + 112, + 227, + 108, + 43, + 139, + 250, + 128, + 22, + 248, + 103, + 163, + 120, + 24, + 30, + 193, + 233, + 167, + 166, + 5, + 220, + 78, + 180, + 47, + 131, + 6, + 238, + 18, + 137, + 172, + 170, + 93, + 56, + 100, + 48, + 194, + 40, + 121, + 223, + 138, + 101, + 9, + 28, + 56, + 18, + 63, + 109, + 65, + 13, + 52, + 35, + 143, + 106, + 3, + 105, + 126, + 72, + 238, + 104, + 173, + 55, + 106, + 10, + 116, + 143, + 29, + 173, + 126, + 47, + 200, + 64, + 58, + 208, + 8, + 200, + 157, + 165, + 167, + 166, + 37, + 66, + 176, + 144, + 19, + 184, + 145, + 205, + 206, + 180, + 1, + 125, + 42, + 250, + 217, + 143, + 204, + 125, + 107, + 72, + 94, + 94, + 85, + 33, + 4, + 189, + 31, + 85, + 254, + 78, + 110, + 151, + 132, + 38, + 246, + 218, + 2, + 198, + 136, + 253, + 239, + 151, + 233, + 224, + 119, + 89, + 184, + 51, + 153, + 129, + 205, + 36, + 68, + 107, + 63, + 207, + 234, + 148, + 186, + 6, + 123, + 42, + 59, + 197, + 251, + 28, + 137, + 209, + 250, + 198, + 104, + 51, + 7, + 221, + 195, + 114, + 123, + 167, + 133, + 16, + 129, + 135, + 131, + 70, + 251, + 176, + 151, + 165, + 28, + 15, + 13, + 244, + 175, + 218, + 54, + 86, + 14, + 238, + 143, + 62, + 178, + 109, + 206, + 159, + 171, + 219, + 84, + 154, + 65, + 14, + 60, + 205, + 108, + 193, + 137, + 11, + 23, + 190, + 220, + 116, + 182, + 74, + 206, + 38, + 17, + 253, + 36, + 213, + 172, + 210, + 31, + 30, + 230, + 231, + 12, + 36, + 37, + 145, + 184, + 203, + 205, + 104, + 84, + 197, + 204, + 235, + 109, + 42, + 24, + 67, + 65, + 5, + 113, + 64, + 56, + 30, + 2, + 154, + 200, + 9, + 177, + 22, + 8, + 11, + 117, + 18, + 235, + 44, + 206, + 34, + 188, + 43, + 37, + 254, + 160, + 18, + 254, + 181, + 110, + 37, + 129, + 164, + 62, + 2, + 3, + 41, + 90, + 81, + 65, + 47, + 44, + 248, + 100, + 127, + 247, + 42, + 18, + 69, + 171, + 80, + 117, + 10, + 225, + 159, + 80, + 206, + 175, + 170, + 15, + 123, + 129, + 226, + 102, + 194, + 94, + 17, + 229, + 110, + 189, + 159, + 211, + 190, + 130, + 192, + 153, + 215, + 188, + 195, + 174, + 136, + 140, + 24, + 138, + 187, + 148, + 148, + 240, + 38, + 164, + 85, + 19, + 161, + 47, + 199, + 238, + 180, + 63, + 109, + 22, + 112, + 219, + 239, + 123, + 140, + 121, + 157, + 216, + 254, + 61, + 35, + 102, + 52, + 175, + 165, + 181, + 229, + 205, + 210, + 6, + 254, + 6, + 43, + 60, + 194, + 1, + 127, + 179, + 180, + 135, + 87, + 254, + 58, + 215, + 64, + 24, + 174, + 105, + 89, + 146, + 150, + 125, + 42, + 254, + 58, + 33, + 53, + 80, + 126, + 50, + 110, + 149, + 107, + 95, + 31, + 48, + 2, + 98, + 192, + 95, + 112, + 110, + 136, + 225, + 150, + 110, + 200, + 221, + 160, + 83, + 64, + 206, + 149, + 160, + 170, + 20, + 160, + 58, + 130, + 27, + 212, + 17, + 210, + 129, + 36, + 13, + 134, + 115, + 128, + 212, + 232, + 254, + 252, + 75, + 132, + 242, + 160, + 237, + 45, + 185, + 102, + 2, + 114, + 35, + 216, + 57, + 193, + 138, + 49, + 199, + 33, + 20, + 102, + 254, + 138, + 114, + 66, + 79, + 107, + 131, + 87, + 135, + 226, + 174, + 86, + 18, + 6, + 142, + 225, + 134, + 85, + 82, + 201, + 17, + 47, + 213, + 61, + 44, + 63, + 193, + 67, + 107, + 31, + 237, + 135, + 209, + 158, + 112, + 22, + 125, + 133, + 212, + 121, + 225, + 221, + 43, + 19, + 125, + 227, + 225, + 96, + 47, + 150, + 218, + 18, + 97, + 223, + 140, + 148, + 198, + 202, + 127, + 40, + 249, + 245, + 194, + 255, + 32, + 39, + 83, + 245, + 123, + 105, + 108, + 201, + 132, + 157, + 5, + 90, + 254, + 44, + 167, + 152, + 86, + 134, + 136, + 78, + 67, + 106, + 83, + 192, + 44, + 50, + 139, + 84, + 21, + 79, + 216, + 214, + 40, + 86, + 251, + 19, + 142, + 217, + 145, + 185, + 212, + 244, + 44, + 156, + 213, + 14, + 239, + 5, + 251, + 53, + 175, + 119, + 126, + 81, + 170, + 197, + 202, + 7, + 138, + 234, + 210, + 208, + 238, + 216, + 62, + 41, + 139, + 197, + 116, + 25, + 242, + 9, + 141, + 13, + 207, + 121, + 19, + 153, + 89, + 114, + 48, + 154, + 242, + 215, + 121, + 167, + 87, + 245, + 11, + 175, + 149, + 77, + 104, + 175, + 5, + 82, + 185, + 149, + 27, + 242, + 124, + 9, + 234, + 61, + 229, + 209, + 151, + 121, + 94, + 176, + 245, + 115, + 59, + 50, + 221, + 85, + 247, + 52, + 157, + 162, + 230, + 46, + 142, + 250, + 134, + 63, + 107, + 30, + 130, + 141, + 176, + 94, + 135, + 111, + 75, + 23, + 1, + 114, + 176, + 186, + 157, + 161, + 198, + 92, + 31, + 16, + 239, + 240, + 153, + 125, + 87, + 125, + 246, + 43, + 23, + 139, + 7, + 93, + 72, + 186, + 145, + 118, + 184, + 161, + 14, + 50, + 103, + 120, + 79, + 151, + 80, + 237, + 195, + 106, + 31, + 20, + 32, + 163, + 221, + 123, + 67, + 20, + 239, + 161, + 178, + 8, + 143, + 169, + 246, + 63, + 29, + 142, + 51, + 150, + 109, + 64, + 137, + 57, + 131, + 200, + 89, + 177, + 111, + 37, + 193, + 105, + 140, + 207, + 125, + 56, + 181, + 101, + 0, + 229, + 51, + 51, + 171, + 244, + 66, + 84, + 172, + 33, + 185, + 105, + 134, + 239, + 120, + 66, + 113, + 44, + 80, + 3, + 2, + 176, + 86, + 130, + 90, + 120, + 221, + 7, + 192, + 235, + 29, + 218, + 88, + 31, + 186, + 43, + 188, + 228, + 244, + 132, + 213, + 194, + 157, + 82, + 102, + 124, + 10, + 1, + 25, + 126, + 149, + 215, + 34, + 54, + 203, + 252, + 175, + 117, + 187, + 214, + 174, + 130, + 238, + 162, + 149, + 11, + 166, + 6, + 41, + 148, + 163, + 96, + 139, + 253, + 0, + 33, + 167, + 35, + 71, + 71, + 51, + 13, + 179, + 35, + 220, + 240, + 30, + 18, + 166, + 235, + 242, + 91, + 5, + 212, + 229, + 112, + 183, + 246, + 49, + 32, + 101, + 221, + 44, + 238, + 54, + 88, + 203, + 38, + 56, + 180, + 67, + 7, + 51, + 20, + 0, + 148, + 10, + 222, + 13, + 224, + 126, + 159, + 81, + 107, + 51, + 81, + 219, + 217, + 231, + 78, + 241, + 85, + 0, + 191, + 102, + 58, + 81, + 166, + 79, + 48, + 92, + 101, + 219, + 25, + 216, + 28, + 163, + 118, + 175, + 73, + 61, + 3, + 236, + 93, + 170, + 50, + 154, + 233, + 67, + 122, + 128, + 73, + 159, + 47, + 2, + 247, + 14, + 219, + 92, + 178, + 50, + 49, + 193, + 36, + 23, + 234, + 8, + 209, + 184, + 124, + 63, + 22, + 106, + 156, + 220, + 202, + 138, + 188, + 56, + 217, + 50, + 235, + 204, + 119, + 246, + 190, + 31, + 169, + 128, + 191, + 112, + 27, + 145, + 242, + 234, + 223, + 240, + 235, + 25, + 158, + 106, + 179, + 19, + 99, + 165, + 196, + 164, + 107, + 173, + 54, + 72, + 216, + 206, + 33, + 65, + 5, + 33, + 111, + 138, + 69, + 12, + 10, + 157, + 113, + 252, + 36, + 67, + 12, + 124, + 79, + 201, + 79, + 215, + 24, + 218, + 21, + 116, + 124, + 0, + 85, + 224, + 209, + 179, + 149, + 120, + 254, + 107, + 71, + 216, + 4, + 155, + 30, + 167, + 189, + 227, + 77, + 119, + 97, + 146, + 200, + 14, + 171, + 30, + 38, + 137, + 177, + 28, + 64, + 119, + 176, + 176, + 212, + 46, + 123, + 11, + 123, + 205, + 10, + 243, + 211, + 75, + 37, + 14, + 100, + 41, + 213, + 41, + 20, + 209, + 186, + 197, + 182, + 32, + 219, + 78, + 179, + 106, + 71, + 13, + 167, + 3, + 167, + 153, + 10, + 154, + 67, + 89, + 228, + 24, + 42, + 248, + 44, + 8, + 40, + 5, + 215, + 189, + 205, + 148, + 231, + 23, + 140, + 248, + 178, + 65, + 118, + 89, + 38, + 55, + 214, + 153, + 92, + 93, + 201, + 236, + 250, + 183, + 67, + 227, + 216, + 220, + 79, + 73, + 237, + 31, + 186, + 5, + 52, + 120, + 160, + 206, + 48, + 8, + 248, + 195, + 233, + 113, + 61, + 33, + 29, + 50, + 147, + 177, + 182, + 199, + 207, + 204, + 249, + 200, + 128, + 35, + 137, + 26, + 75, + 158, + 220, + 151, + 51, + 125, + 163, + 102, + 166, + 125, + 107, + 27, + 25, + 243, + 242, + 161, + 228, + 153, + 28, + 174, + 87, + 117, + 167, + 124, + 49, + 41, + 139, + 209, + 36, + 193, + 87, + 183, + 168, + 217, + 157, + 68, + 55, + 61, + 230, + 124, + 98, + 81, + 58, + 87, + 18, + 213, + 10, + 239, + 108, + 153, + 241, + 252, + 227, + 32, + 154, + 186, + 28, + 133, + 143, + 114, + 217, + 212, + 64, + 64, + 8, + 40, + 28, + 67, + 125, + 62, + 58, + 160, + 135, + 117, + 246, + 244, + 100, + 143, + 162, + 152, + 254, + 113, + 100, + 219, + 175, + 250, + 0, + 141, + 134, + 61, + 15, + 12, + 108, + 144, + 134, + 29, + 36, + 239, + 65, + 230, + 210, + 158, + 185, + 9, + 236, + 194, + 196, + 247, + 77, + 91, + 128, + 50, + 61, + 197, + 208, + 3, + 201, + 211, + 200, + 16, + 233, + 59, + 248, + 150, + 174, + 180, + 33, + 249, + 211, + 8, + 189, + 172, + 239, + 204, + 73, + 84, + 78, + 32, + 66, + 146, + 243, + 52, + 52, + 184, + 27, + 228, + 74, + 18, + 157, + 11, + 102, + 141, + 162, + 180, + 63, + 119, + 69, + 128, + 198, + 133, + 159, + 238, + 157, + 95, + 4, + 92, + 199, + 225, + 46, + 22, + 221, + 70, + 214, + 168, + 64, + 31, + 109, + 56, + 237, + 215, + 20, + 242, + 238, + 28, + 255, + 48, + 168, + 249, + 109, + 192, + 47, + 134, + 66, + 178, + 33, + 158, + 131, + 173, + 180, + 45, + 24, + 78, + 3, + 86, + 204, + 191, + 238, + 93, + 132, + 107, + 85, + 192, + 199, + 89, + 185, + 34, + 230, + 240, + 136, + 217, + 20, + 4, + 58, + 214, + 153, + 74, + 87, + 37, + 205, + 98, + 227, + 51, + 10, + 1, + 193, + 35, + 69, + 85, + 126, + 80, + 113, + 177, + 101, + 0, + 252, + 215, + 56, + 226, + 120, + 223, + 5, + 245, + 124, + 11, + 76, + 249, + 68, + 248, + 58, + 177, + 144, + 12, + 15, + 107, + 173, + 219, + 149, + 215, + 65, + 100, + 152, + 99, + 249, + 4, + 143, + 139, + 101, + 52, + 177, + 182, + 228, + 118, + 72, + 227, + 214, + 165, + 70, + 104, + 67, + 157, + 4, + 63, + 254, + 77, + 211, + 101, + 198, + 32, + 167, + 213, + 37, + 52, + 129, + 167, + 126, + 155, + 96, + 62, + 127, + 220, + 13, + 228, + 106, + 228, + 35, + 114, + 151, + 95, + 245, + 242, + 107, + 205, + 90, + 0, + 225, + 40, + 55, + 55, + 172, + 246, + 208, + 16, + 100, + 116, + 225, + 158, + 234, + 187, + 87, + 29, + 54, + 171, + 243, + 38, + 153, + 2, + 11, + 5, + 117, + 203, + 150, + 217, + 81, + 252, + 205, + 153, + 156, + 146, + 128, + 229, + 40, + 127, + 108, + 208, + 225, + 148, + 23, + 112, + 133, + 103, + 200, + 8, + 115, + 58, + 213, + 112, + 180, + 33, + 139, + 6, + 240, + 69, + 248, + 122, + 69, + 197, + 53, + 97, + 8, + 127, + 6, + 25, + 146, + 248, + 45, + 39, + 17, + 7, + 77, + 138, + 13, + 35, + 83, + 32, + 16, + 148, + 213, + 125, + 215, + 208, + 213, + 188, + 237, + 33, + 127, + 144, + 60, + 219, + 78, + 21, + 171, + 213, + 246, + 139, + 178, + 144, + 190, + 106, + 198, + 250, + 33, + 18, + 18, + 24, + 103, + 224, + 60, + 150, + 221, + 11, + 81, + 243, + 202, + 136, + 135, + 106, + 96, + 201, + 183, + 162, + 159, + 80, + 15, + 74, + 152, + 195, + 181, + 199, + 231, + 189, + 184, + 224, + 91, + 144, + 56, + 123, + 156, + 185, + 175, + 8, + 0, + 196, + 139, + 80, + 239, + 27, + 244, + 193, + 65, + 105, + 117, + 57, + 47, + 32, + 108, + 172, + 128, + 154, + 82, + 119, + 130, + 97, + 6, + 190, + 55, + 126, + 17, + 187, + 91, + 136, + 61, + 219, + 61, + 55, + 37, + 34, + 208, + 167, + 43, + 138, + 63, + 200, + 156, + 3, + 135, + 220, + 231, + 18, + 173, + 77, + 179, + 89, + 100, + 93, + 222, + 168, + 173, + 20, + 12, + 211, + 205, + 236, + 136, + 92, + 82, + 49, + 21, + 152, + 109, + 228, + 98, + 140, + 240, + 14, + 188, + 208, + 21, + 223, + 204, + 16, + 215, + 145, + 233, + 209, + 99, + 219, + 170, + 131, + 76, + 137, + 162, + 35, + 179, + 188, + 215, + 11, + 72, + 55, + 115, + 201, + 45, + 231, + 194, + 146, + 58, + 9, + 170, + 77, + 127, + 146, + 223, + 63, + 252, + 148, + 250, + 191, + 254, + 47, + 95, + 251, + 246, + 158, + 91, + 135, + 195, + 104, + 130, + 243, + 25, + 232, + 252, + 54, + 246, + 64, + 97, + 27, + 47, + 186, + 116, + 90, + 200, + 239, + 107, + 74, + 64, + 53, + 152, + 66, + 181, + 106, + 104, + 114, + 203, + 112, + 109, + 85, + 50, + 72, + 112, + 12, + 69, + 224, + 199, + 50, + 254, + 96, + 247, + 83, + 108, + 1, + 46, + 215, + 180, + 144, + 198, + 19, + 87, + 6, + 223, + 170, + 123, + 129, + 247, + 118, + 56, + 197, + 188, + 235, + 168, + 55, + 12, + 70, + 113, + 84, + 35, + 62, + 234, + 80, + 118, + 18, + 110, + 162, + 118, + 156, + 174, + 83, + 163, + 247, + 24, + 19, + 118, + 72, + 83, + 127, + 221, + 73, + 147, + 97, + 95, + 219, + 186, + 9, + 38, + 10, + 93, + 37, + 161, + 95, + 189, + 130, + 69, + 54, + 42, + 222, + 134, + 148, + 100, + 244, + 90, + 77, + 32, + 222, + 253, + 145, + 196, + 94, + 75, + 241, + 148, + 218, + 1, + 3, + 52, + 203, + 60, + 107, + 70, + 221, + 214, + 61, + 55, + 196, + 203, + 21, + 165, + 211, + 130, + 144, + 156, + 157, + 177, + 66, + 75, + 162, + 177, + 188, + 89, + 25, + 57, + 170, + 190, + 206, + 76, + 237, + 53, + 204, + 67, + 244, + 102, + 23, + 72, + 87, + 114, + 22, + 12, + 191, + 193, + 150, + 111, + 74, + 241, + 141, + 200, + 3, + 175, + 87, + 225, + 206, + 33, + 55, + 244, + 186, + 27, + 177, + 25, + 100, + 94, + 230, + 128, + 248, + 130, + 236, + 49, + 100, + 37, + 253, + 165, + 118, + 150, + 18, + 248, + 39, + 38, + 251, + 148, + 109, + 226, + 251, + 142, + 40, + 130, + 103, + 243, + 188, + 64, + 255, + 24, + 29, + 191, + 40, + 141, + 73, + 221, + 5, + 225, + 244, + 169, + 186, + 80, + 204, + 164, + 221, + 13, + 34, + 42, + 101, + 153, + 18, + 187, + 139, + 52, + 69, + 21, + 117, + 173, + 48, + 68, + 77, + 127, + 212, + 214, + 28, + 120, + 34, + 236, + 230, + 242, + 13, + 209, + 58, + 187, + 195, + 121, + 215, + 105, + 110, + 254, + 6, + 147, + 129, + 140, + 232, + 123, + 201, + 15, + 36, + 76, + 173, + 143, + 215, + 235, + 39, + 254, + 95, + 210, + 254, + 72, + 205, + 91, + 230, + 187, + 180, + 237, + 102, + 32, + 31, + 158, + 74, + 120, + 62, + 60, + 231, + 12, + 13, + 205, + 78, + 95, + 203, + 20, + 85, + 234, + 111, + 119, + 32, + 225, + 139, + 226, + 95, + 180, + 170, + 239, + 63, + 210, + 8, + 187, + 203, + 100, + 75, + 186, + 173, + 35, + 23, + 189, + 166, + 94, + 242, + 187, + 104, + 13, + 96, + 7, + 186, + 197, + 212, + 19, + 38, + 113, + 236, + 143, + 149, + 111, + 144, + 116, + 73, + 93, + 3, + 231, + 90, + 50, + 175, + 151, + 182, + 109, + 109, + 2, + 81, + 69, + 48, + 0, + 17, + 229, + 231, + 4, + 207, + 197, + 183, + 187, + 123, + 36, + 96, + 125, + 209, + 151, + 56, + 109, + 171, + 51, + 90, + 228, + 69, + 210, + 196, + 195, + 36, + 229, + 67, + 108, + 39, + 146, + 139, + 162, + 9, + 104, + 50, + 212, + 118, + 194, + 95, + 59, + 59, + 57, + 226, + 50, + 176, + 47, + 117, + 109, + 108, + 45, + 75, + 12, + 30, + 245, + 36, + 181, + 157, + 163, + 187, + 251, + 149, + 159, + 139, + 17, + 47, + 190, + 202, + 36, + 24, + 237, + 75, + 78, + 4, + 47, + 156, + 92, + 41, + 16, + 46, + 216, + 180, + 254, + 213, + 95, + 203, + 89, + 38, + 180, + 56, + 7, + 177, + 205, + 119, + 13, + 100, + 180, + 11, + 60, + 123, + 93, + 42, + 237, + 198, + 24, + 205, + 158, + 185, + 222, + 239, + 51, + 163, + 43, + 64, + 138, + 15, + 51, + 175, + 147, + 201, + 44, + 235, + 18, + 152, + 64, + 127, + 97, + 224, + 249, + 176, + 80, + 8, + 118, + 145, + 249, + 24, + 237, + 249, + 83, + 164, + 113, + 199, + 77, + 183, + 78, + 222, + 60, + 163, + 250, + 3, + 223, + 26, + 131, + 130, + 90, + 174, + 113, + 122, + 219, + 51, + 207, + 230, + 0, + 50, + 102, + 21, + 154, + 13, + 26, + 99, + 206, + 206, + 39, + 145, + 31, + 222, + 236, + 62, + 54, + 69, + 183, + 40, + 28, + 189, + 141, + 178, + 98, + 175, + 142, + 92, + 137, + 138, + 91, + 19, + 77, + 3, + 87, + 85, + 127, + 68, + 165, + 188, + 48, + 214, + 165, + 169, + 216, + 152, + 108, + 155, + 140, + 25, + 115, + 94, + 199, + 194, + 98, + 146, + 28, + 86, + 148, + 124, + 77, + 46, + 157, + 30, + 176, + 89, + 111, + 215, + 92, + 96, + 159, + 112, + 230, + 11, + 155, + 49, + 138, + 55, + 175, + 207, + 162, + 170, + 164, + 2, + 44, + 26, + 176, + 244, + 50, + 41, + 239, + 150, + 39, + 219, + 83, + 6, + 35, + 104, + 28, + 127, + 200, + 117, + 188, + 143, + 90, + 0, + 82, + 101, + 127, + 140, + 165, + 98, + 207, + 31, + 213, + 93, + 60, + 31, + 13, + 8, + 88, + 138, + 73, + 234, + 64, + 29, + 14, + 16, + 193, + 73, + 183, + 111, + 229, + 9, + 60, + 186, + 199, + 251, + 59, + 180, + 49, + 22, + 67, + 189, + 207, + 196, + 87, + 225, + 43, + 6, + 226, + 212, + 171, + 135, + 161, + 215, + 169, + 55, + 113, + 97, + 110, + 129, + 18, + 35, + 109, + 243, + 146, + 246, + 176, + 253, + 146, + 226, + 103, + 220, + 223, + 2, + 16, + 66, + 180, + 161, + 142, + 65, + 6, + 0, + 253, + 220, + 113, + 145, + 131, + 24, + 85, + 113, + 78, + 90, + 34, + 151, + 3, + 35, + 119, + 164, + 59, + 159, + 74, + 38, + 92, + 187, + 231, + 236, + 146, + 179, + 184, + 146, + 67, + 98, + 91, + 15, + 34, + 133, + 236, + 56, + 116, + 90, + 17, + 7, + 48, + 16, + 112, + 209, + 74, + 57, + 140, + 96, + 25, + 203, + 254, + 244, + 138, + 97, + 191, + 203, + 71, + 123, + 154, + 248, + 248, + 62, + 70, + 133, + 140, + 40, + 212, + 102, + 27, + 26, + 195, + 143, + 80, + 184, + 63, + 43, + 93, + 66, + 233, + 133, + 234, + 106, + 77, + 115, + 13, + 240, + 242, + 180, + 87, + 8, + 6, + 111, + 118, + 240, + 174, + 183, + 156, + 245, + 6, + 84, + 209, + 227, + 45, + 88, + 5, + 207, + 43, + 51, + 219, + 231, + 63, + 38, + 114, + 21, + 190, + 60, + 100, + 95, + 43, + 156, + 238, + 248, + 204, + 234, + 21, + 188, + 109, + 5, + 176, + 225, + 88, + 105, + 58, + 120, + 9, + 89, + 30, + 40, + 157, + 193, + 165, + 196, + 106, + 40, + 70, + 210, + 11, + 35, + 96, + 82, + 128, + 102, + 9, + 203, + 96, + 42, + 225, + 201, + 201, + 15, + 51, + 10, + 82, + 236, + 62, + 87, + 75, + 236, + 86, + 44, + 78, + 113, + 77, + 8, + 20, + 92, + 16, + 246, + 139, + 125, + 104, + 231, + 89, + 141, + 248, + 135, + 200, + 23, + 223, + 17, + 213, + 228, + 44, + 45, + 3, + 50, + 235, + 5, + 255, + 28, + 57, + 83, + 42, + 202, + 115, + 139, + 217, + 208, + 15, + 147, + 72, + 163, + 107, + 77, + 38, + 38, + 39, + 36, + 107, + 147, + 126, + 16, + 40, + 180, + 117, + 85, + 250, + 20, + 76, + 59, + 145, + 34, + 39, + 85, + 252, + 157, + 212, + 42, + 15, + 104, + 26, + 167, + 225, + 146, + 176, + 61, + 128, + 61, + 255, + 219, + 155, + 200, + 85, + 0, + 251, + 150, + 73, + 48, + 13, + 127, + 181, + 191, + 132, + 237, + 222, + 254, + 44, + 107, + 129, + 196, + 143, + 21, + 132, + 155, + 15, + 81, + 47, + 178, + 10, + 100, + 87, + 119, + 191, + 44, + 214, + 146, + 213, + 57, + 160, + 166, + 179, + 142, + 137, + 242, + 231, + 100, + 41, + 169, + 52, + 223, + 150, + 183, + 54, + 104, + 77, + 45, + 66, + 142, + 251, + 70, + 251, + 137, + 167, + 73, + 63, + 139, + 79, + 206, + 158, + 199, + 43, + 27, + 70, + 33, + 34, + 174, + 31, + 58, + 26, + 153, + 203, + 205, + 181, + 231, + 17, + 130, + 64, + 165, + 85, + 165, + 193, + 2, + 19, + 3, + 189, + 141, + 132, + 198, + 116, + 227, + 179, + 5, + 239, + 90, + 23, + 22, + 148, + 102, + 81, + 229, + 27, + 199, + 207, + 201, + 65, + 201, + 142, + 238, + 235, + 228, + 24, + 120, + 232, + 134, + 177, + 49, + 176, + 24, + 44, + 107, + 176, + 162, + 78, + 0, + 229, + 129, + 66, + 215, + 32, + 41, + 79, + 148, + 47, + 195, + 161, + 244, + 120, + 25, + 83, + 117, + 60, + 203, + 140, + 226, + 156, + 52, + 29, + 111, + 106, + 209, + 142, + 98, + 248, + 160, + 157, + 200, + 11, + 108, + 139, + 192, + 156, + 193, + 30, + 80, + 159, + 17, + 116, + 57, + 32, + 17, + 178, + 179, + 38, + 144, + 8, + 16, + 57, + 222, + 231, + 106, + 121, + 235, + 227, + 70, + 25, + 12, + 20, + 210, + 209, + 148, + 9, + 167, + 231, + 132, + 216, + 129, + 198, + 178, + 28, + 20, + 229, + 189, + 63, + 41, + 36, + 204, + 149, + 26, + 202, + 46, + 172, + 95, + 76, + 112, + 244, + 18, + 227, + 163, + 66, + 84, + 73, + 219, + 69, + 26, + 255, + 255, + 109, + 235, + 42, + 84, + 34, + 31, + 70, + 113, + 152, + 171, + 209, + 113, + 3, + 246, + 115, + 117, + 95, + 199, + 147, + 200, + 192, + 190, + 94, + 123, + 138, + 36, + 179, + 167, + 155, + 153, + 214, + 141, + 239, + 57, + 91, + 63, + 201, + 165, + 127, + 92, + 199, + 69, + 255, + 36, + 241, + 219, + 45, + 52, + 41, + 110, + 28, + 41, + 168, + 125, + 214, + 16, + 118, + 44, + 137, + 7, + 31, + 16, + 110, + 222, + 10, + 254, + 211, + 43, + 9, + 50, + 244, + 131, + 19, + 188, + 13, + 54, + 219, + 72, + 240, + 12, + 23, + 152, + 135, + 252, + 19, + 108, + 136, + 133, + 84, + 254, + 137, + 210, + 142, + 190, + 49, + 81, + 120, + 112, + 91, + 97, + 169, + 103, + 214, + 218, + 251, + 104, + 222, + 234, + 240, + 248, + 123, + 201, + 106, + 249, + 44, + 166, + 228, + 195, + 254, + 104, + 76, + 145, + 86, + 93, + 225, + 144, + 218, + 5, + 170, + 24, + 34, + 87, + 71, + 90, + 192, + 162, + 7, + 190, + 57, + 136, + 185, + 248, + 91, + 68, + 254, + 42, + 31, + 153, + 35, + 154, + 155, + 209, + 63, + 69, + 74, + 114, + 25, + 111, + 191, + 105, + 249, + 33, + 70, + 90, + 146, + 92, + 45, + 106, + 236, + 144, + 95, + 28, + 77, + 65, + 23, + 221, + 156, + 11, + 241, + 88, + 40, + 244, + 203, + 202, + 60, + 151, + 110, + 65, + 236, + 206, + 174, + 184, + 199, + 6, + 123, + 61, + 136, + 107, + 63, + 6, + 253, + 13, + 13, + 210, + 56, + 78, + 37, + 253, + 0, + 239, + 52, + 37, + 58, + 134, + 59, + 116, + 12, + 86, + 133, + 241, + 161, + 8, + 33, + 231, + 43, + 134, + 110, + 223, + 246, + 27, + 25, + 181, + 211, + 239, + 55, + 157, + 20, + 210, + 41, + 73, + 228, + 98, + 101, + 25, + 73, + 152, + 8, + 103, + 33, + 10, + 146, + 52, + 94, + 240, + 82, + 243, + 152, + 156, + 183, + 18, + 235, + 80, + 246, + 43, + 113, + 199, + 189, + 28, + 21, + 197, + 251, + 204, + 43, + 20, + 149, + 82, + 217, + 96, + 21, + 120, + 54, + 110, + 81, + 3, + 169, + 254, + 198, + 125, + 75, + 74, + 161, + 8, + 189, + 222, + 17, + 235, + 154, + 55, + 91, + 193, + 9, + 127, + 153, + 82, + 91, + 61, + 14, + 223, + 162, + 148, + 39, + 39, + 173, + 89, + 102, + 27, + 71, + 111, + 89, + 206, + 121, + 216, + 189, + 98, + 209, + 181, + 195, + 16, + 220, + 112, + 186, + 116, + 248, + 88, + 78, + 240, + 116, + 6, + 229, + 150, + 85, + 143, + 242, + 176, + 190, + 102, + 130, + 200, + 199, + 178, + 135, + 148, + 224, + 23, + 72, + 144, + 57, + 87, + 25, + 171, + 121, + 123, + 204, + 194, + 183, + 57, + 31, + 38, + 29, + 138, + 198, + 152, + 247, + 222, + 164, + 189, + 19, + 18, + 203, + 234, + 98, + 226, + 22, + 195, + 4, + 90, + 255, + 249, + 34, + 48, + 140, + 219, + 179, + 92, + 39, + 8, + 192, + 76, + 29, + 228, + 187, + 215, + 214, + 85, + 2, + 250, + 190, + 130, + 165, + 37, + 137, + 138, + 81, + 182, + 127, + 29, + 235, + 133, + 248, + 195, + 82, + 171, + 146, + 147, + 10, + 32, + 38, + 30, + 204, + 99, + 159, + 236, + 219, + 140, + 253, + 215, + 221, + 220, + 18, + 176, + 81, + 191, + 210, + 36, + 86, + 69, + 48, + 90, + 63, + 145, + 119, + 106, + 140, + 2, + 208, + 14, + 99, + 92, + 89, + 147, + 191, + 102, + 10, + 168, + 222, + 41, + 0, + 153, + 80, + 222, + 124, + 10, + 149, + 211, + 52, + 228, + 69, + 129, + 37, + 25, + 103, + 202, + 90, + 75, + 59, + 144, + 240, + 4, + 171, + 208, + 130, + 27, + 4, + 7, + 68, + 241, + 181, + 156, + 143, + 42, + 188, + 140, + 89, + 253, + 49, + 138, + 186, + 182, + 17, + 84, + 142, + 236, + 16, + 171, + 125, + 122, + 189, + 93, + 101, + 127, + 138, + 218, + 90, + 122, + 244, + 130, + 153, + 247, + 76, + 169, + 30, + 91, + 191, + 9, + 177, + 20, + 182, + 96, + 225, + 40, + 156, + 249, + 159, + 58, + 233, + 33, + 26, + 50, + 24, + 143, + 226, + 188, + 62, + 43, + 144, + 59, + 161, + 167, + 130, + 109, + 6, + 78, + 177, + 67, + 172, + 112, + 45, + 191, + 69, + 63, + 144, + 209, + 242, + 49, + 143, + 135, + 184, + 65, + 142, + 238, + 4, + 32, + 134, + 164, + 164, + 74, + 124, + 13, + 210, + 2, + 33, + 209, + 234, + 31, + 128, + 162, + 171, + 0, + 4, + 252, + 32, + 18, + 154, + 237, + 206, + 217, + 178, + 133, + 151, + 252, + 181, + 82, + 182, + 68, + 115, + 140, + 166, + 81, + 117, + 47, + 146, + 167, + 233, + 152, + 196, + 203, + 254, + 251, + 23, + 83, + 255, + 120, + 53, + 231, + 81, + 225, + 79, + 191, + 192, + 250, + 193, + 125, + 24, + 218, + 218, + 220, + 234, + 191, + 150, + 246, + 249, + 111, + 139, + 138, + 15, + 102, + 157, + 251, + 188, + 214, + 21, + 11, + 177, + 205, + 7, + 80, + 236, + 229, + 198, + 213, + 104, + 79, + 91, + 64, + 195, + 126, + 148, + 43, + 172, + 100, + 201, + 200, + 181, + 46, + 132, + 120, + 236, + 147, + 230, + 163, + 43, + 214, + 223, + 76, + 179, + 29, + 202, + 48, + 200, + 245, + 131, + 72, + 218, + 4, + 10, + 169, + 56, + 198, + 149, + 90, + 11, + 117, + 142, + 8, + 229, + 20, + 41, + 196, + 102, + 78, + 208, + 117, + 215, + 156, + 122, + 68, + 7, + 135, + 237, + 97, + 19, + 212, + 225, + 48, + 53, + 3, + 192, + 210, + 93, + 244, + 70, + 73, + 22, + 228, + 62, + 155, + 142, + 229, + 179, + 84, + 177, + 112, + 218, + 217, + 139, + 199, + 75, + 31, + 253, + 208, + 205, + 13, + 24, + 93, + 124, + 241, + 230, + 133, + 2, + 222, + 74, + 160, + 37, + 164, + 40, + 21, + 3, + 192, + 92, + 141, + 135, + 138, + 231, + 170, + 216, + 154, + 170, + 110, + 167, + 129, + 234, + 151, + 203, + 142, + 62, + 91, + 74, + 201, + 217, + 109, + 178, + 208, + 59, + 32, + 188, + 204, + 105, + 5, + 2, + 238, + 106, + 202, + 249, + 42, + 15, + 171, + 221, + 152, + 190, + 125, + 222, + 155, + 60, + 203, + 184, + 156, + 196, + 35, + 41, + 14, + 149, + 93, + 177, + 114, + 70, + 219, + 59, + 174, + 130, + 55, + 254, + 233, + 184, + 152, + 113, + 90, + 143, + 200, + 40, + 178, + 126, + 67, + 32, + 42, + 169, + 164, + 75, + 64, + 84, + 240, + 179, + 32, + 55, + 235, + 139, + 5, + 247, + 142, + 242, + 26, + 25, + 106, + 149, + 55, + 51, + 18, + 217, + 198, + 84, + 242, + 97, + 91, + 146, + 60, + 177, + 174, + 15, + 71, + 40, + 186, + 69, + 190, + 122, + 244, + 171, + 6, + 204, + 103, + 4, + 80, + 84, + 249, + 254, + 140, + 78, + 239, + 58, + 1, + 234, + 222, + 243, + 37, + 160, + 44, + 191, + 225, + 56, + 60, + 152, + 186, + 241, + 107, + 163, + 43, + 236, + 226, + 140, + 146, + 4, + 69, + 121, + 153, + 203, + 95, + 192, + 79, + 224, + 113, + 125, + 222, + 27, + 187, + 227, + 213, + 213, + 96, + 108, + 95, + 180, + 101, + 191, + 149, + 51, + 229, + 166, + 211, + 0, + 80, + 102, + 23, + 84, + 67, + 170, + 236, + 191, + 128, + 240, + 111, + 164, + 122, + 26, + 86, + 103, + 96, + 184, + 233, + 164, + 104, + 151, + 5, + 246, + 197, + 39, + 58, + 188, + 90, + 26, + 106, + 101, + 24, + 130, + 59, + 222, + 101, + 123, + 20, + 162, + 155, + 228, + 242, + 76, + 79, + 64, + 167, + 182, + 116, + 99, + 208, + 82, + 145, + 39, + 87, + 182, + 26, + 143, + 226, + 7, + 30, + 15, + 110, + 157, + 247, + 1, + 40, + 179, + 131, + 246, + 218, + 199, + 225, + 231, + 8, + 246, + 123, + 223, + 157, + 103, + 126, + 224, + 98, + 100, + 156, + 216, + 7, + 169, + 112, + 94, + 126, + 231, + 248, + 251, + 38, + 191, + 83, + 45, + 43, + 46, + 182, + 107, + 184, + 216, + 99, + 88, + 200, + 126, + 44, + 165, + 97, + 11, + 24, + 13, + 95, + 168, + 61, + 91, + 248, + 58, + 185, + 21, + 107, + 199, + 229, + 213, + 178, + 218, + 229, + 19, + 240, + 180, + 154, + 105, + 225, + 38, + 240, + 199, + 217, + 92, + 159, + 131, + 5, + 141, + 82, + 154, + 151, + 71, + 237, + 118, + 161, + 114, + 164, + 142, + 185, + 232, + 250, + 202, + 111, + 239, + 12, + 161, + 17, + 28, + 7, + 14, + 237, + 80, + 236, + 168, + 125, + 66, + 28, + 162, + 31, + 195, + 19, + 147, + 125, + 176, + 83, + 73, + 237, + 129, + 57, + 33, + 247, + 211, + 178, + 97, + 218, + 162, + 210, + 159, + 5, + 93, + 219, + 12, + 59, + 218, + 155, + 0, + 111, + 224, + 25, + 68, + 165, + 97, + 100, + 31, + 85, + 125, + 206, + 187, + 112, + 151, + 120, + 254, + 70, + 170, + 245, + 166, + 108, + 244, + 180, + 85, + 124, + 36, + 232, + 140, + 153, + 13, + 128, + 87, + 8, + 41, + 59, + 217, + 78, + 132, + 142, + 136, + 22, + 30, + 121, + 75, + 74, + 116, + 232, + 247, + 19, + 189, + 124, + 157, + 244, + 126, + 248, + 194, + 145, + 144, + 182, + 100, + 1, + 154, + 203, + 115, + 105, + 137, + 15, + 193, + 177, + 150, + 196, + 13, + 214, + 124, + 129, + 39, + 64, + 222, + 53, + 212, + 130, + 145, + 28, + 81, + 32, + 226, + 42, + 71, + 49, + 132, + 74, + 114, + 141, + 163, + 153, + 162, + 83, + 221, + 201, + 146, + 133, + 127, + 238, + 182, + 143, + 110, + 227, + 94, + 173, + 147, + 81, + 196, + 16, + 154, + 9, + 30, + 144, + 99, + 215, + 174, + 183, + 133, + 89, + 128, + 78, + 211, + 138, + 2, + 226, + 43, + 115, + 81, + 49, + 153, + 102, + 186, + 190, + 216, + 6, + 60, + 195, + 234, + 121, + 210, + 97, + 120, + 60, + 206, + 131, + 130, + 74, + 29, + 206, + 161, + 132, + 109, + 193, + 74, + 192, + 218, + 171, + 3, + 156, + 14, + 219, + 147, + 35, + 57, + 67, + 138, + 43, + 219, + 166, + 129, + 18, + 212, + 177, + 170, + 73, + 241, + 70, + 13, + 160, + 134, + 7, + 41, + 89, + 220, + 205, + 13, + 54, + 73, + 209, + 63, + 76, + 208, + 177, + 134, + 100, + 100, + 197, + 51, + 172, + 150, + 150, + 40, + 198, + 223, + 149, + 55, + 102, + 135, + 237, + 89, + 121, + 0, + 139, + 117, + 99, + 147, + 39, + 55, + 100, + 73, + 192, + 24, + 75, + 254, + 86, + 47, + 95, + 24, + 108, + 192, + 192, + 177, + 160, + 111, + 62, + 187, + 51, + 162, + 1, + 204, + 177, + 91, + 189, + 26, + 137, + 45, + 88, + 15, + 66, + 151, + 137, + 194, + 224, + 104, + 254, + 105, + 169, + 100, + 249, + 49, + 160, + 133, + 134, + 189, + 177, + 150, + 132, + 223, + 154, + 76, + 6, + 96, + 151, + 229, + 78, + 130, + 234, + 73, + 242, + 212, + 111, + 144, + 154, + 210, + 49, + 0, + 38, + 190, + 7, + 157, + 3, + 53, + 108, + 46, + 250, + 175, + 243, + 24, + 221, + 161, + 92, + 175, + 90, + 42, + 155, + 71, + 32, + 239, + 105, + 189, + 21, + 26, + 154, + 109, + 196, + 99, + 48, + 27, + 117, + 73, + 16, + 21, + 198, + 255, + 225, + 129, + 22, + 210, + 253, + 5, + 102, + 117, + 128, + 89, + 82, + 18, + 180, + 211, + 178, + 173, + 167, + 77, + 175, + 197, + 58, + 13, + 129, + 29, + 216, + 127, + 57, + 64, + 159, + 47, + 155, + 253, + 109, + 182, + 193, + 8, + 155, + 238, + 137, + 213, + 208, + 89, + 76, + 237, + 10, + 5, + 230, + 207, + 22, + 99, + 102, + 117, + 19, + 217, + 252, + 239, + 74, + 71, + 94, + 158, + 218, + 50, + 247, + 45, + 7, + 179, + 194, + 60, + 208, + 22, + 222, + 248, + 57, + 243, + 100, + 221, + 121, + 28, + 173, + 107, + 146, + 213, + 45, + 162, + 251, + 182, + 13, + 23, + 106, + 221, + 0, + 83, + 20, + 84, + 222, + 18, + 63, + 250, + 203, + 14, + 47, + 135, + 128, + 60, + 14, + 233, + 76, + 200, + 209, + 240, + 106, + 21, + 65, + 160, + 170, + 232, + 27, + 192, + 246, + 98, + 34, + 153, + 105, + 128, + 186, + 91, + 8, + 196, + 46, + 117, + 149, + 61, + 182, + 169, + 38, + 254, + 241, + 113, + 51, + 88, + 76, + 138, + 241, + 113, + 68, + 217, + 155, + 158, + 92, + 80, + 67, + 163, + 144, + 132, + 27, + 46, + 169, + 116, + 241, + 128, + 115, + 15, + 225, + 227, + 82, + 70, + 180, + 69, + 74, + 179, + 174, + 185, + 152, + 26, + 1, + 133, + 230, + 25, + 81, + 100, + 178, + 205, + 153, + 78, + 68, + 141, + 83, + 183, + 195, + 170, + 106, + 71, + 218, + 59, + 232, + 33, + 66, + 80, + 185, + 242, + 26, + 55, + 248, + 153, + 63, + 197, + 235, + 51, + 59, + 48, + 85, + 107, + 176, + 6, + 162, + 192, + 44, + 191, + 204, + 23, + 49, + 170, + 33, + 72, + 193, + 237, + 70, + 169, + 61, + 187, + 29, + 197, + 254, + 213, + 115, + 87, + 183, + 228, + 81, + 151, + 254, + 5, + 59, + 208, + 26, + 40, + 226, + 250, + 100, + 171, + 93, + 84, + 88, + 35, + 58, + 11, + 139, + 47, + 105, + 182, + 85, + 40, + 35, + 119, + 39, + 141, + 111, + 2, + 61, + 2, + 145, + 78, + 254, + 176, + 187, + 38, + 87, + 101, + 57, + 161, + 21, + 42, + 240, + 126, + 245, + 168, + 201, + 129, + 251, + 249, + 2, + 175, + 39, + 165, + 152, + 171, + 76, + 14, + 60, + 199, + 73, + 6, + 221, + 81, + 106, + 77, + 185, + 182, + 186, + 250, + 113, + 44, + 81, + 208, + 208, + 174, + 81, + 26, + 238, + 27, + 157, + 205, + 113, + 253, + 87, + 146, + 28, + 249, + 128, + 80, + 158, + 68, + 220, + 164, + 239, + 228, + 120, + 54, + 158, + 171, + 162, + 135, + 76, + 121, + 231, + 204, + 83, + 128, + 181, + 40, + 240, + 3, + 133, + 37, + 235, + 54, + 163, + 216, + 98, + 203, + 142, + 153, + 73, + 86, + 37, + 73, + 232, + 87, + 161, + 85, + 51, + 66, + 138, + 235, + 167, + 87, + 103, + 186, + 226, + 94, + 215, + 167, + 7, + 122, + 142, + 214, + 238, + 158, + 180, + 129, + 144, + 213, + 210, + 35, + 89, + 16, + 102, + 244, + 171, + 225, + 205, + 12, + 92, + 93, + 227, + 60, + 201, + 27, + 11, + 98, + 28, + 64, + 62, + 236, + 91, + 218, + 190, + 56, + 200, + 67, + 220, + 196, + 235, + 115, + 222, + 130, + 235, + 219, + 110, + 24, + 84, + 179, + 37, + 241, + 58, + 20, + 12, + 153, + 210, + 2, + 41, + 89, + 210, + 95, + 159, + 6, + 135, + 155, + 86, + 89, + 26, + 89, + 207, + 178, + 252, + 90, + 28, + 151, + 124, + 16, + 140, + 220, + 56, + 244, + 208, + 173, + 91, + 18, + 132, + 205, + 171, + 50, + 196, + 130, + 23, + 164, + 92, + 2, + 58, + 119, + 164, + 206, + 75, + 249, + 235, + 66, + 103, + 148, + 199, + 12, + 108, + 142, + 222, + 49, + 188, + 114, + 17, + 248, + 44, + 106, + 170, + 217, + 88, + 74, + 88, + 145, + 179, + 137, + 11, + 2, + 196, + 61, + 62, + 189, + 253, + 80, + 220, + 48, + 195, + 155, + 29, + 228, + 99, + 163, + 141, + 201, + 29, + 170, + 182, + 8, + 13, + 76, + 20, + 101, + 110, + 169, + 218, + 102, + 167, + 102, + 79, + 159, + 141, + 80, + 221, + 49, + 239, + 228, + 106, + 180, + 176, + 177, + 70, + 241, + 24, + 90, + 24, + 13, + 110, + 220, + 98, + 131, + 251, + 207, + 37, + 59, + 209, + 165, + 119, + 23, + 129, + 131, + 1, + 124, + 198, + 47, + 63, + 115, + 181, + 173, + 11, + 51, + 30, + 108, + 229, + 34, + 189, + 71, + 246, + 40, + 213, + 110, + 77, + 175, + 178, + 237, + 208, + 125, + 121, + 101, + 62, + 93, + 44, + 207, + 128, + 78, + 246, + 43, + 177, + 72, + 68, + 250, + 63, + 121, + 236, + 165, + 122, + 117, + 109, + 38, + 200, + 220, + 56, + 215, + 242, + 37, + 209, + 152, + 196, + 109, + 164, + 95, + 134, + 87, + 125, + 55, + 60, + 254, + 242, + 155, + 17, + 95, + 168, + 107, + 204, + 75, + 112, + 15, + 215, + 11, + 7, + 69, + 77, + 38, + 14, + 139, + 91, + 155, + 94, + 58, + 251, + 171, + 128, + 24, + 164, + 95, + 36, + 49, + 138, + 196, + 31, + 78, + 39, + 134, + 126, + 101, + 82, + 58, + 197, + 155, + 119, + 150, + 44, + 198, + 245, + 92, + 176, + 148, + 5, + 176, + 191, + 86, + 45, + 81, + 64, + 116, + 117, + 208, + 217, + 175, + 181, + 36, + 35, + 213, + 90, + 183, + 253, + 43, + 69, + 67, + 0, + 252, + 228, + 37, + 190, + 215, + 113, + 221, + 165, + 254, + 24, + 116, + 197, + 143, + 59, + 122, + 95, + 204, + 160, + 66, + 167, + 169, + 199, + 166, + 90, + 190, + 226, + 5, + 128, + 135, + 143, + 130, + 50, + 160, + 220, + 248, + 69, + 207, + 250, + 64, + 58, + 110, + 161, + 210, + 0, + 116, + 116, + 121, + 125, + 231, + 255, + 113, + 102, + 83, + 206, + 6, + 214, + 237, + 134, + 2, + 242, + 16, + 32, + 135, + 34, + 102, + 204, + 244, + 102, + 52, + 194, + 50, + 131, + 106, + 111, + 198, + 201, + 18, + 253, + 77, + 145, + 230, + 79, + 57, + 189, + 227, + 105, + 242, + 20, + 57, + 248, + 118, + 161, + 56, + 254, + 152, + 99, + 67, + 84, + 118, + 153, + 81, + 78, + 19, + 174, + 6, + 81, + 17, + 95, + 1, + 244, + 200, + 178, + 127, + 205, + 177, + 135, + 222, + 48, + 198, + 175, + 166, + 13, + 185, + 218, + 232, + 239, + 212, + 227, + 245, + 251, + 139, + 93, + 63, + 75, + 26, + 29, + 185, + 227, + 244, + 108, + 4, + 132, + 249, + 203, + 148, + 34, + 244, + 234, + 245, + 28, + 200, + 152, + 191, + 196, + 86, + 120, + 9, + 240, + 149, + 193, + 200, + 203, + 113, + 79, + 128, + 16, + 220, + 234, + 173, + 109, + 2, + 131, + 62, + 228, + 167, + 99, + 9, + 162, + 34, + 184, + 174, + 12, + 131, + 245, + 101, + 79, + 198, + 79, + 56, + 140, + 63, + 82, + 140, + 227, + 67, + 5, + 5, + 109, + 40, + 159, + 52, + 158, + 178, + 166, + 113, + 126, + 201, + 10, + 241, + 173, + 171, + 5, + 221, + 112, + 178, + 96, + 133, + 226, + 210, + 65, + 77, + 73, + 98, + 226, + 11, + 30, + 24, + 20, + 13, + 34, + 10, + 220, + 164, + 13, + 58, + 185, + 51, + 235, + 208, + 114, + 219, + 27, + 140, + 222, + 53, + 187, + 28, + 217, + 255, + 86, + 165, + 209, + 47, + 42, + 205, + 109, + 219, + 7, + 62, + 83, + 170, + 135, + 166, + 175, + 216, + 71, + 36, + 77, + 230, + 245, + 93, + 97, + 147, + 195, + 206, + 161, + 12, + 40, + 201, + 192, + 72, + 56, + 92, + 207, + 109, + 21, + 205, + 253, + 133, + 29, + 103, + 99, + 172, + 103, + 217, + 244, + 2, + 226, + 204, + 102, + 89, + 47, + 6, + 219, + 237, + 5, + 118, + 176, + 23, + 197, + 183, + 129, + 165, + 100, + 94, + 190, + 236, + 252, + 194, + 245, + 100, + 231, + 251, + 98, + 138, + 75, + 42, + 95, + 160, + 197, + 66, + 47, + 123, + 38, + 105, + 81, + 246, + 242, + 47, + 190, + 27, + 147, + 252, + 93, + 166, + 180, + 80, + 1, + 119, + 223, + 182, + 186, + 101, + 98, + 100, + 49, + 9, + 83, + 129, + 37, + 217, + 20, + 216, + 29, + 9, + 175, + 82, + 243, + 143, + 227, + 45, + 55, + 96, + 128, + 35, + 11, + 147, + 89, + 176, + 229, + 176, + 201, + 213, + 220, + 129, + 46, + 140, + 67, + 203, + 253, + 7, + 193, + 223, + 45, + 189, + 193, + 82, + 64, + 218, + 152, + 85, + 18, + 47, + 186, + 136, + 217, + 225, + 120, + 116, + 251, + 36, + 126, + 235, + 109, + 218, + 152, + 41, + 160, + 177, + 42, + 60, + 141, + 228, + 139, + 54, + 88, + 109, + 186, + 55, + 78, + 73, + 247, + 156, + 169, + 153, + 100, + 50, + 83, + 187, + 200, + 208, + 245, + 230, + 32, + 79, + 152, + 174, + 88, + 1, + 221, + 172, + 93, + 151, + 40, + 202, + 202, + 210, + 39, + 4, + 91, + 78, + 229, + 244, + 110, + 237, + 154, + 170, + 221, + 194, + 210, + 154, + 160, + 208, + 98, + 251, + 239, + 250, + 36, + 59, + 20, + 220, + 183, + 68, + 219, + 240, + 71, + 26, + 21, + 90, + 225, + 139, + 157, + 188, + 143, + 245, + 72, + 223, + 157, + 163, + 75, + 62, + 129, + 139, + 40, + 229, + 84, + 10, + 85, + 121, + 211, + 150, + 230, + 235, + 74, + 211, + 140, + 8, + 34, + 165, + 172, + 205, + 89, + 2, + 169, + 29, + 127, + 157, + 91, + 176, + 2, + 203, + 214, + 185, + 49, + 118, + 188, + 82, + 119, + 163, + 78, + 106, + 67, + 34, + 122, + 214, + 24, + 47, + 146, + 129, + 235, + 119, + 222, + 218, + 134, + 105, + 71, + 32, + 247, + 219, + 133, + 248, + 238, + 162, + 40, + 183, + 54, + 49, + 86, + 200, + 187, + 107, + 133, + 186, + 145, + 126, + 175, + 192, + 93, + 80, + 83, + 230, + 136, + 224, + 100, + 3, + 138, + 6, + 193, + 203, + 119, + 182, + 17, + 5, + 128, + 233, + 103, + 93, + 27, + 218, + 173, + 1, + 165, + 200, + 130, + 249, + 36, + 156, + 85, + 159, + 171, + 92, + 118, + 41, + 61, + 92, + 228, + 112, + 122, + 180, + 59, + 20, + 117, + 229, + 183, + 149, + 190, + 195, + 148, + 251, + 58, + 122, + 77, + 255, + 153, + 74, + 240, + 114, + 3, + 35, + 149, + 173, + 74, + 154, + 66, + 116, + 52, + 95, + 209, + 237, + 49, + 58, + 135, + 104, + 183, + 231, + 13, + 82, + 35, + 192, + 135, + 181, + 38, + 34, + 49, + 195, + 20, + 252, + 206, + 152, + 24, + 9, + 17, + 37, + 115, + 244, + 126, + 235, + 180, + 70, + 72, + 145, + 49, + 95, + 127, + 175, + 231, + 27, + 164, + 108, + 238, + 11, + 252, + 205, + 182, + 254, + 127, + 190, + 22, + 253, + 186, + 166, + 206, + 68, + 244, + 26, + 81, + 136, + 145, + 144, + 14, + 56, + 225, + 239, + 132, + 16, + 106, + 93, + 150, + 174, + 3, + 45, + 223, + 131, + 143, + 48, + 112, + 98, + 252, + 60, + 10, + 44, + 9, + 218, + 66, + 55, + 117, + 212, + 235, + 167, + 164, + 226, + 209, + 112, + 27, + 224, + 222, + 108, + 173, + 147, + 27, + 95, + 42, + 103, + 39, + 226, + 59, + 130, + 147, + 124, + 48, + 58, + 229, + 220, + 24, + 179, + 212, + 238, + 49, + 216, + 219, + 83, + 35, + 47, + 104, + 255, + 97, + 42, + 185, + 209, + 146, + 32, + 222, + 248, + 198, + 93, + 113, + 23, + 207, + 36, + 8, + 190, + 189, + 65, + 19, + 190, + 30, + 33, + 144, + 105, + 247, + 32, + 114, + 172, + 180, + 156, + 140, + 3, + 233, + 101, + 78, + 192, + 127, + 15, + 146, + 201, + 241, + 88, + 42, + 163, + 214, + 174, + 229, + 173, + 240, + 83, + 207, + 182, + 140, + 165, + 161, + 207, + 11, + 252, + 230, + 84, + 246, + 124, + 197, + 206, + 231, + 107, + 83, + 96, + 78, + 147, + 213, + 161, + 70, + 155, + 195, + 87, + 51, + 27, + 148, + 178, + 82, + 225, + 207, + 77, + 48, + 142, + 52, + 25, + 76, + 243, + 163, + 50, + 59, + 253, + 111, + 251, + 62, + 119, + 208, + 178, + 216, + 243, + 71, + 204, + 238, + 3, + 254, + 91, + 124, + 202, + 97, + 58, + 119, + 144, + 121, + 201, + 72, + 209, + 89, + 254, + 245, + 143, + 45, + 116, + 142, + 29, + 49, + 39, + 68, + 207, + 123, + 138, + 237, + 176, + 206, + 178, + 52, + 130, + 208, + 7, + 161, + 254, + 217, + 112, + 180, + 106, + 49, + 223, + 65, + 192, + 83, + 172, + 226, + 209, + 204, + 144, + 210, + 55, + 223, + 207, + 225, + 179, + 145, + 129, + 89, + 43, + 107, + 147, + 210, + 42, + 163, + 197, + 187, + 189, + 80, + 119, + 55, + 229, + 138, + 144, + 7, + 127, + 191, + 78, + 19, + 95, + 173, + 164, + 158, + 216, + 143, + 200, + 2, + 236, + 198, + 18, + 66, + 181, + 47, + 220, + 106, + 44, + 79, + 201, + 59, + 134, + 208, + 7, + 52, + 172, + 55, + 41, + 198, + 205, + 218, + 157, + 94, + 31, + 12, + 253, + 46, + 249, + 97, + 10, + 128, + 229, + 157, + 5, + 153, + 226, + 163, + 248, + 239, + 204, + 206, + 72, + 120, + 87, + 175, + 80, + 98, + 99, + 109, + 251, + 78, + 44, + 105, + 252, + 98, + 204, + 226, + 131, + 205, + 175, + 197, + 2, + 80, + 174, + 228, + 171, + 86, + 242, + 144, + 252, + 147, + 60, + 64, + 226, + 78, + 72, + 35, + 109, + 168, + 68, + 42, + 85, + 85, + 208, + 126, + 19, + 157, + 249, + 166, + 161, + 109, + 136, + 184, + 50, + 200, + 194, + 159, + 197, + 91, + 222, + 170, + 71, + 89, + 52, + 89, + 193, + 233, + 85, + 136, + 115, + 151, + 110, + 245, + 150, + 29, + 225, + 196, + 134, + 199, + 115, + 162, + 190, + 56, + 157, + 29, + 29, + 49, + 99, + 196, + 7, + 0, + 170, + 103, + 152, + 78, + 103, + 5, + 13, + 200, + 165, + 176, + 69, + 63, + 222, + 245, + 130, + 120, + 7, + 153, + 76, + 67, + 36, + 147, + 4, + 63, + 4, + 21, + 183, + 137, + 119, + 81, + 249, + 97, + 233, + 98, + 215, + 212, + 193, + 173, + 74, + 131, + 147, + 89, + 124, + 79, + 183, + 233, + 42, + 112, + 67, + 105, + 65, + 97, + 189, + 251, + 158, + 184, + 112, + 32, + 89, + 238, + 41, + 154, + 114, + 198, + 170, + 67, + 99, + 131, + 86, + 237, + 109, + 218, + 176, + 129, + 10, + 186, + 14, + 186, + 39, + 50, + 148, + 166, + 160, + 117, + 217, + 10, + 165, + 164, + 232, + 195, + 97, + 170, + 131, + 202, + 125, + 120, + 222, + 37, + 47, + 35, + 16, + 2, + 157, + 21, + 190, + 28, + 155, + 48, + 33, + 142, + 0, + 75, + 41, + 131, + 118, + 167, + 158, + 56, + 250, + 242, + 228, + 238, + 14, + 86, + 56, + 185, + 166, + 188, + 165, + 39, + 152, + 244, + 114, + 186, + 66, + 156, + 156, + 227, + 87, + 131, + 223, + 110, + 235, + 152, + 35, + 78, + 25, + 20, + 6, + 147, + 229, + 103, + 106, + 153, + 40, + 71, + 254, + 214, + 157, + 152, + 110, + 218, + 212, + 128, + 122, + 112, + 244, + 253, + 136, + 146, + 216, + 235, + 93, + 170, + 2, + 163, + 229, + 158, + 178, + 53, + 212, + 160, + 41, + 148, + 72, + 88, + 18, + 182, + 150, + 223, + 111, + 24, + 38, + 162, + 106, + 131, + 69, + 211, + 255, + 33, + 230, + 91, + 222, + 29, + 230, + 136, + 81, + 154, + 216, + 115, + 55, + 231, + 60, + 67, + 94, + 218, + 246, + 49, + 122, + 230, + 237, + 203, + 92, + 38, + 237, + 121, + 150, + 129, + 230, + 31, + 223, + 104, + 124, + 113, + 149, + 154, + 82, + 255, + 115, + 165, + 20, + 192, + 182, + 9, + 10, + 157, + 218, + 198, + 212, + 35, + 84, + 210, + 255, + 103, + 154, + 172, + 139, + 128, + 131, + 25, + 53, + 228, + 99, + 110, + 226, + 184, + 24, + 129, + 196, + 152, + 194, + 143, + 246, + 181, + 151, + 165, + 3, + 136, + 83, + 178, + 213, + 154, + 175, + 0, + 27, + 52, + 75, + 17, + 18, + 181, + 175, + 39, + 20, + 215, + 103, + 52, + 85, + 29, + 67, + 59, + 49, + 90, + 123, + 82, + 133, + 126, + 145, + 41, + 234, + 152, + 62, + 221, + 197, + 72, + 136, + 58, + 214, + 207, + 203, + 211, + 53, + 42, + 241, + 222, + 246, + 141, + 233, + 196, + 85, + 47, + 244, + 135, + 176, + 195, + 33, + 120, + 154, + 174, + 226, + 169, + 186, + 94, + 196, + 23, + 159, + 211, + 173, + 241, + 228, + 51, + 208, + 34, + 222, + 254, + 24, + 42, + 241, + 59, + 75, + 72, + 234, + 170, + 136, + 155, + 42, + 69, + 226, + 214, + 158, + 195, + 107, + 126, + 175, + 79, + 84, + 46, + 37, + 170, + 172, + 42, + 171, + 37, + 235, + 187, + 82, + 63, + 54, + 10, + 197, + 144, + 64, + 8, + 199, + 156, + 126, + 242, + 7, + 214, + 202, + 185, + 7, + 26, + 59, + 205, + 166, + 110, + 72, + 45, + 219, + 204, + 120, + 17, + 98, + 249, + 61, + 197, + 12, + 238, + 82, + 205, + 100, + 44, + 241, + 247, + 79, + 250, + 125, + 150, + 226, + 44, + 24, + 147, + 25, + 171, + 18, + 221, + 218, + 212, + 229, + 255, + 150, + 173, + 97, + 122, + 149, + 249, + 57, + 43, + 34, + 175, + 23, + 224, + 202, + 150, + 172, + 27, + 229, + 27, + 109, + 188, + 213, + 80, + 89, + 165, + 205, + 221, + 118, + 73, + 237, + 112, + 33, + 209, + 212, + 143, + 11, + 87, + 55, + 69, + 215, + 252, + 255, + 114, + 61, + 246, + 6, + 139, + 121, + 169, + 243, + 30, + 110, + 40, + 176, + 196, + 130, + 179, + 69, + 81, + 5, + 201, + 91, + 20, + 68, + 75, + 91, + 130, + 213, + 80, + 131, + 179, + 182, + 226, + 0, + 139, + 111, + 199, + 199, + 169, + 46, + 76, + 140, + 77, + 159, + 106, + 239, + 104, + 230, + 97, + 76, + 21, + 50, + 221, + 146, + 106, + 78, + 34, + 105, + 201, + 65, + 102, + 157, + 189, + 225, + 238, + 99, + 154, + 219, + 235, + 156, + 110, + 50, + 165, + 163, + 38, + 203, + 165, + 249, + 176, + 250, + 105, + 53, + 96, + 68, + 237, + 226, + 171, + 137, + 40, + 192, + 20, + 94, + 6, + 206, + 110, + 235, + 134, + 169, + 254, + 156, + 87, + 11, + 82, + 163, + 156, + 27, + 108, + 147, + 158, + 106, + 202, + 129, + 29, + 118, + 78, + 236, + 205, + 2, + 238, + 65, + 6, + 71, + 234, + 21, + 155, + 230, + 104, + 217, + 12, + 130, + 167, + 128, + 83, + 37, + 55, + 208, + 82, + 233, + 123, + 157, + 141, + 181, + 178, + 226, + 238, + 39, + 107, + 215, + 232, + 211, + 144, + 143, + 70, + 170, + 233, + 163, + 48, + 191, + 1, + 79, + 132, + 231, + 214, + 202, + 203, + 13, + 135, + 23, + 219, + 126, + 86, + 250, + 235, + 144, + 140, + 113, + 122, + 5, + 138, + 161, + 58, + 210, + 161, + 159, + 69, + 249, + 49, + 10, + 51, + 128, + 232, + 214, + 9, + 116, + 199, + 197, + 23, + 55, + 173, + 190, + 114, + 60, + 7, + 231, + 48, + 132, + 47, + 156, + 185, + 8, + 18, + 37, + 53, + 23, + 247, + 249, + 109, + 59, + 6, + 114, + 117, + 49, + 198, + 68, + 220, + 154, + 253, + 37, + 98, + 13, + 124, + 58, + 102, + 143, + 216, + 52, + 91, + 248, + 67, + 12, + 235, + 186, + 32, + 168, + 18, + 151, + 215, + 102, + 232, + 37, + 82, + 241, + 240, + 51, + 85, + 142, + 152, + 194, + 123, + 87, + 94, + 93, + 99, + 177, + 106, + 5, + 38, + 143, + 111, + 60, + 242, + 197, + 254, + 71, + 125, + 225, + 251, + 191, + 136, + 13, + 58, + 157, + 55, + 51, + 32, + 112, + 216, + 102, + 159, + 226, + 147, + 6, + 244, + 26, + 163, + 107, + 140, + 55, + 249, + 200, + 168, + 130, + 236, + 73, + 178, + 27, + 203, + 84, + 235, + 197, + 22, + 79, + 167, + 26, + 132, + 43, + 156, + 90, + 174, + 88, + 129, + 195, + 121, + 215, + 254, + 128, + 254, + 154, + 22, + 195, + 13, + 132, + 39, + 45, + 167, + 111, + 7, + 173, + 234, + 251, + 113, + 2, + 113, + 11, + 87, + 57, + 160, + 61, + 238, + 210, + 113, + 75, + 36, + 101, + 209, + 144, + 67, + 139, + 88, + 118, + 56, + 40, + 2, + 156, + 211, + 123, + 54, + 253, + 60, + 131, + 132, + 216, + 163, + 61, + 208, + 86, + 125, + 140, + 23, + 94, + 8, + 127, + 151, + 71, + 72, + 29, + 209, + 123, + 100, + 110, + 123, + 56, + 155, + 170, + 38, + 157, + 214, + 63, + 144, + 76, + 128, + 244, + 38, + 217, + 87, + 21, + 116, + 109, + 103, + 114, + 72, + 78, + 242, + 130, + 187, + 137, + 185, + 181, + 77, + 144, + 184, + 196, + 205, + 173, + 204, + 24, + 55, + 159, + 26, + 98, + 168, + 238, + 213, + 142, + 149, + 143, + 68, + 179, + 129, + 238, + 76, + 236, + 78, + 91, + 59, + 50, + 120, + 6, + 91, + 251, + 212, + 182, + 217, + 214, + 164, + 143, + 55, + 182, + 117, + 218, + 87, + 21, + 96, + 31, + 141, + 236, + 214, + 35, + 202, + 191, + 214, + 160, + 244, + 14, + 95, + 8, + 211, + 129, + 115, + 221, + 136, + 109, + 232, + 180, + 179, + 105, + 73, + 240, + 33, + 101, + 25, + 176, + 18, + 41, + 198, + 198, + 39, + 136, + 210, + 130, + 108, + 172, + 103, + 128, + 217, + 146, + 239, + 102, + 227, + 57, + 105, + 51, + 6, + 195, + 235, + 235, + 113, + 142, + 83, + 53, + 147, + 187, + 123, + 78, + 127, + 243, + 9, + 165, + 234, + 89, + 36, + 45, + 7, + 209, + 0, + 103, + 138, + 190, + 22, + 238, + 163, + 195, + 209, + 38, + 165, + 134, + 74, + 239, + 74, + 237, + 221, + 77, + 199, + 45, + 148, + 49, + 44, + 69, + 50, + 4, + 221, + 203, + 217, + 188, + 73, + 152, + 90, + 77, + 151, + 2, + 147, + 118, + 144, + 182, + 254, + 51, + 50, + 105, + 175, + 65, + 38, + 64, + 3, + 81, + 1, + 122, + 61, + 173, + 47, + 65, + 180, + 64, + 8, + 18, + 56, + 253, + 139, + 160, + 234, + 7, + 134, + 84, + 66, + 244, + 130, + 254, + 183, + 195, + 18, + 68, + 190, + 122, + 44, + 15, + 123, + 6, + 202, + 197, + 144, + 20, + 110, + 246, + 176, + 0, + 205, + 186, + 119, + 219, + 102, + 5, + 165, + 252, + 135, + 245, + 203, + 212, + 171, + 240, + 189, + 203, + 6, + 76, + 181, + 137, + 225, + 90, + 59, + 157, + 59, + 234, + 218, + 165, + 180, + 36, + 66, + 111, + 40, + 115, + 128, + 125, + 39, + 91, + 129, + 225, + 98, + 52, + 235, + 194, + 84, + 241, + 1, + 212, + 199, + 201, + 193, + 2, + 118, + 1, + 228, + 9, + 247, + 114, + 185, + 218, + 81, + 34, + 121, + 126, + 38, + 3, + 185, + 212, + 25, + 151, + 134, + 201, + 96, + 15, + 223, + 110, + 64, + 247, + 72, + 191, + 233, + 83, + 73, + 19, + 254, + 9, + 192, + 253, + 214, + 247, + 126, + 225, + 45, + 139, + 137, + 165, + 209, + 113, + 116, + 251, + 138, + 138, + 114, + 148, + 183, + 48, + 166, + 23, + 168, + 133, + 223, + 52, + 191, + 58, + 176, + 93, + 77, + 101, + 42, + 180, + 250, + 13, + 23, + 242, + 3, + 57, + 199, + 138, + 62, + 14, + 178, + 47, + 47, + 176, + 3, + 253, + 172, + 31, + 75, + 202, + 119, + 85, + 125, + 202, + 28, + 142, + 203, + 167, + 83, + 228, + 98, + 31, + 199, + 207, + 29, + 145, + 8, + 143, + 69, + 178, + 173, + 231, + 165, + 30, + 152, + 108, + 169, + 212, + 229, + 177, + 213, + 208, + 215, + 14, + 79, + 252, + 254, + 214, + 76, + 155, + 75, + 236, + 30, + 154, + 207, + 71, + 80, + 122, + 86, + 102, + 236, + 245, + 82, + 111, + 70, + 8, + 77, + 133, + 57, + 164, + 206, + 79, + 225, + 95, + 50, + 230, + 7, + 123, + 134, + 232, + 73, + 84, + 114, + 20, + 198, + 33, + 169, + 132, + 143, + 163, + 169, + 217, + 253, + 97, + 239, + 40, + 163, + 149, + 170, + 92, + 234, + 116, + 172, + 202, + 130, + 97, + 57, + 35, + 70, + 144, + 230, + 90, + 172, + 28, + 165, + 90, + 237, + 80, + 206, + 23, + 2, + 48, + 163, + 39, + 160, + 253, + 153, + 2, + 139, + 103, + 49, + 4, + 209, + 181, + 26, + 120, + 98, + 192, + 62, + 135, + 185, + 151, + 100, + 100, + 229, + 11, + 116, + 194, + 12, + 192, + 37, + 15, + 209, + 187, + 39, + 172, + 87, + 50, + 117, + 180, + 151, + 126, + 79, + 126, + 207, + 119, + 233, + 157, + 114, + 137, + 252, + 233, + 223, + 10, + 4, + 90, + 10, + 124, + 197, + 128, + 28, + 76, + 237, + 192, + 29, + 130, + 160, + 50, + 211, + 13, + 134, + 39, + 10, + 101, + 40, + 177, + 72, + 45, + 149, + 68, + 104, + 72, + 32, + 69, + 42, + 84, + 210, + 23, + 108, + 212, + 22, + 37, + 184, + 33, + 65, + 69, + 24, + 58, + 1, + 152, + 85, + 159, + 175, + 228, + 125, + 126, + 226, + 45, + 40, + 178, + 26, + 43, + 239, + 147, + 21, + 111, + 114, + 31, + 77, + 119, + 92, + 54, + 235, + 219, + 223, + 85, + 234, + 220, + 138, + 2, + 120, + 140, + 68, + 165, + 36, + 140, + 241, + 253, + 33, + 207, + 92, + 124, + 44, + 104, + 169, + 115, + 10, + 5, + 204, + 153, + 84, + 111, + 175, + 11, + 189, + 92, + 232, + 59, + 162, + 195, + 199, + 122, + 127, + 62, + 240, + 195, + 108, + 22, + 60, + 87, + 92, + 150, + 167, + 181, + 98, + 37, + 189, + 208, + 56, + 213, + 246, + 177, + 176, + 202, + 171, + 68, + 179, + 149, + 90, + 245, + 140, + 113, + 188, + 173, + 107, + 246, + 118, + 10, + 227, + 83, + 123, + 29, + 251, + 44, + 24, + 24, + 201, + 95, + 250, + 42, + 85, + 19, + 162, + 144, + 31, + 30, + 30, + 228, + 247, + 70, + 70, + 11, + 138, + 115, + 137, + 212, + 114, + 40, + 81, + 47, + 108, + 134, + 6, + 149, + 162, + 50, + 40, + 52, + 112, + 87, + 116, + 183, + 170, + 242, + 241, + 143, + 202, + 122, + 247, + 38, + 6, + 219, + 246, + 52, + 45, + 106, + 218, + 73, + 167, + 70, + 163, + 58, + 95, + 53, + 213, + 102, + 180, + 150, + 3, + 5, + 223, + 140, + 196, + 78, + 217, + 247, + 107, + 242, + 142, + 126, + 178, + 16, + 158, + 116, + 30, + 206, + 17, + 232, + 166, + 44, + 191, + 21, + 48, + 157, + 229, + 13, + 220, + 239, + 197, + 89, + 161, + 98, + 150, + 41, + 148, + 204, + 39, + 54, + 240, + 112, + 10, + 168, + 151, + 182, + 73, + 197, + 120, + 96, + 216, + 238, + 196, + 5, + 42, + 199, + 87, + 242, + 58, + 23, + 214, + 26, + 101, + 128, + 198, + 131, + 152, + 167, + 151, + 133, + 28, + 205, + 11, + 33, + 152, + 176, + 93, + 184, + 63, + 43, + 23, + 226, + 196, + 167, + 49, + 103, + 108, + 96, + 117, + 254, + 168, + 85, + 40, + 45, + 254, + 126, + 100, + 92, + 148, + 47, + 17, + 125, + 195, + 54, + 25, + 243, + 36, + 183, + 220, + 11, + 254, + 46, + 79, + 144, + 119, + 103, + 142, + 42, + 61, + 128, + 41, + 30, + 61, + 242, + 6, + 195, + 135, + 161, + 21, + 31, + 198, + 147, + 12, + 66, + 182, + 149, + 137, + 198, + 29, + 201, + 71, + 164, + 209, + 66, + 61, + 27, + 27, + 169, + 226, + 43, + 101, + 134, + 174, + 41, + 70, + 156, + 90, + 206, + 237, + 10, + 231, + 186, + 173, + 90, + 187, + 239, + 128, + 220, + 195, + 184, + 69, + 27, + 143, + 101, + 251, + 146, + 220, + 220, + 163, + 137, + 98, + 12, + 119, + 41, + 45, + 53, + 135, + 159, + 173, + 16, + 228, + 35, + 157, + 252, + 117, + 0, + 112, + 228, + 75, + 61, + 18, + 112, + 247, + 218, + 232, + 28, + 64, + 252, + 199, + 94, + 57, + 233, + 35, + 29, + 153, + 84, + 47, + 63, + 151, + 114, + 101, + 215, + 10, + 49, + 35, + 36, + 109, + 122, + 70, + 80, + 145, + 22, + 143, + 12, + 209, + 196, + 236, + 179, + 254, + 129, + 176, + 200, + 99, + 204, + 5, + 206, + 78, + 63, + 185, + 8, + 165, + 44, + 163, + 84, + 77, + 121, + 228, + 178, + 96, + 211, + 110, + 50, + 155, + 147, + 116, + 213, + 91, + 205, + 83, + 30, + 153, + 77, + 152, + 76, + 143, + 38, + 93, + 87, + 8, + 221, + 224, + 13, + 70, + 68, + 233, + 107, + 121, + 208, + 37, + 183, + 219, + 106, + 182, + 46, + 1, + 222, + 143, + 177, + 81, + 180, + 209, + 61, + 193, + 34, + 108, + 94, + 212, + 159, + 220, + 99, + 227, + 120, + 197, + 9, + 94, + 56, + 227, + 70, + 93, + 21, + 29, + 217, + 165, + 40, + 84, + 205, + 207, + 1, + 20, + 149, + 13, + 89, + 137, + 69, + 225, + 180, + 200, + 9, + 95, + 200, + 174, + 62, + 30, + 214, + 59, + 232, + 162, + 172, + 84, + 177, + 62, + 123, + 121, + 36, + 166, + 221, + 175, + 63, + 60, + 248, + 217, + 222, + 17, + 191, + 239, + 236, + 195, + 97, + 200, + 234, + 134, + 72, + 58, + 209, + 211, + 75, + 227, + 146, + 24, + 60, + 133, + 7, + 74, + 247, + 231, + 199, + 138, + 195, + 202, + 146, + 138, + 121, + 123, + 10, + 174, + 81, + 115, + 74, + 43, + 88, + 192, + 242, + 177, + 197, + 87, + 169, + 254, + 97, + 18, + 186, + 12, + 33, + 225, + 100, + 16, + 50, + 181, + 35, + 93, + 232, + 45, + 70, + 226, + 46, + 221, + 169, + 53, + 80, + 162, + 200, + 246, + 87, + 3, + 222, + 62, + 43, + 48, + 218, + 127, + 225, + 153, + 157, + 137, + 168, + 230, + 220, + 205, + 128, + 111, + 213, + 126, + 91, + 4, + 135, + 40, + 29, + 82, + 246, + 117, + 216, + 36, + 204, + 166, + 49, + 172, + 46, + 5, + 78, + 221, + 245, + 160, + 250, + 83, + 226, + 176, + 90, + 102, + 190, + 187, + 172, + 237, + 188, + 208, + 87, + 95, + 6, + 197, + 120, + 157, + 104, + 115, + 45, + 64, + 155, + 125, + 190, + 249, + 195, + 2, + 211, + 200, + 221, + 237, + 135, + 123, + 149, + 132, + 6, + 154, + 136, + 65, + 231, + 178, + 206, + 219, + 224, + 175, + 185, + 39, + 78, + 212, + 77, + 37, + 226, + 164, + 53, + 20, + 116, + 175, + 230, + 100, + 166, + 9, + 76, + 78, + 41, + 76, + 117, + 210, + 26, + 240, + 26, + 178, + 33, + 182, + 215, + 181, + 24, + 34, + 20, + 138, + 228, + 85, + 207, + 5, + 138, + 129, + 181, + 197, + 85, + 130, + 202, + 1, + 218, + 207, + 142, + 148, + 194, + 199, + 174, + 20, + 229, + 158, + 74, + 28, + 170, + 15, + 221, + 108, + 188, + 245, + 193, + 198, + 237, + 176, + 242, + 126, + 215, + 22, + 39, + 77, + 134, + 135, + 131, + 144, + 243, + 192, + 13, + 244, + 141, + 35, + 31, + 16, + 163, + 237, + 136, + 2, + 116, + 171, + 159, + 157, + 129, + 13, + 69, + 250, + 65, + 203, + 184, + 203, + 153, + 202, + 166, + 217, + 255, + 212, + 175, + 25, + 255, + 208, + 236, + 190, + 94, + 53, + 91, + 173, + 137, + 89, + 45, + 87, + 243, + 38, + 115, + 17, + 110, + 23, + 128, + 213, + 187, + 136, + 161, + 247, + 61, + 191, + 43, + 200, + 190, + 157, + 80, + 205, + 253, + 126, + 89, + 40, + 208, + 189, + 139, + 179, + 32, + 102, + 69, + 181, + 55, + 164, + 26, + 89, + 199, + 227, + 225, + 250, + 149, + 152, + 191, + 57, + 230, + 155, + 13, + 96, + 250, + 206, + 195, + 163, + 183, + 168, + 130, + 28, + 243, + 199, + 147, + 178, + 246, + 183, + 132, + 144, + 219, + 11, + 135, + 12, + 56, + 127, + 86, + 110, + 154, + 178, + 91, + 149, + 238, + 131, + 127, + 146, + 154, + 163, + 189, + 218, + 157, + 86, + 183, + 111, + 136, + 126, + 207, + 102, + 111, + 49, + 73, + 222, + 83, + 110, + 173, + 192, + 118, + 239, + 206, + 231, + 132, + 208, + 165, + 57, + 123, + 129, + 206, + 120, + 17, + 188, + 86, + 72, + 156, + 56, + 240, + 80, + 40, + 232, + 86, + 226, + 10, + 114, + 202, + 31, + 192, + 49, + 33, + 9, + 136, + 72, + 187, + 133, + 167, + 52, + 126, + 239, + 221, + 1, + 91, + 82, + 148, + 34, + 55, + 165, + 66, + 134, + 176, + 79, + 161, + 236, + 104, + 51, + 215, + 126, + 71, + 39, + 236, + 57, + 47, + 2, + 114, + 154, + 195, + 166, + 62, + 72, + 252, + 254, + 99, + 246, + 52, + 164, + 123, + 110, + 133, + 29, + 198, + 34, + 103, + 156, + 25, + 58, + 11, + 202, + 24, + 18, + 151, + 216, + 67, + 12, + 21, + 133, + 113, + 197, + 46, + 113, + 231, + 186, + 61, + 97, + 108, + 56, + 46, + 131, + 189, + 203, + 242, + 57, + 12, + 248, + 160, + 70, + 130, + 192, + 244, + 245, + 17, + 64, + 114, + 232, + 140, + 236, + 70, + 32, + 122, + 17, + 65, + 32, + 133, + 10, + 16, + 131, + 133, + 123, + 252, + 84, + 223, + 20, + 118, + 63, + 230, + 252, + 216, + 151, + 94, + 104, + 91, + 156, + 63, + 53, + 221, + 93, + 120, + 172, + 31, + 174, + 30, + 251, + 215, + 53, + 32, + 37, + 127, + 199, + 160, + 29, + 20, + 141, + 73, + 53, + 188, + 186, + 181, + 95, + 51, + 223, + 115, + 220, + 254, + 227, + 53, + 142, + 85, + 175, + 237, + 112, + 173, + 176, + 212, + 232, + 225, + 138, + 158, + 221, + 157, + 28, + 249, + 204, + 208, + 215, + 224, + 74, + 179, + 110, + 44, + 246, + 86, + 189, + 52, + 184, + 137, + 84, + 199, + 135, + 34, + 209, + 195, + 221, + 163, + 66, + 30, + 171, + 123, + 65, + 103, + 203, + 32, + 48, + 119, + 204, + 34, + 242, + 224, + 189, + 220, + 133, + 99, + 46, + 94, + 224, + 224, + 153, + 78, + 10, + 251, + 219, + 36, + 14, + 180, + 125, + 232, + 111, + 181, + 73, + 164, + 250, + 193, + 157, + 10, + 11, + 125, + 56, + 69, + 246, + 227, + 172, + 48, + 107, + 43, + 228, + 101, + 238, + 0, + 213, + 34, + 32, + 88, + 26, + 26, + 23, + 133, + 73, + 194, + 135, + 205, + 240, + 93, + 76, + 222, + 144, + 44, + 4, + 143, + 212, + 3, + 249, + 11, + 137, + 77, + 186, + 145, + 173, + 216, + 66, + 249, + 253, + 48, + 98, + 27, + 164, + 206, + 4, + 73, + 39, + 161, + 26, + 38, + 6, + 100, + 172, + 55, + 84, + 138, + 21, + 101, + 167, + 215, + 18, + 249, + 114, + 167, + 184, + 197, + 8, + 241, + 0, + 140, + 128, + 113, + 15, + 53, + 7, + 150, + 87, + 134, + 139, + 170, + 211, + 91, + 211, + 46, + 204, + 162, + 21, + 52, + 170, + 205, + 34, + 248, + 193, + 178, + 229, + 235, + 205, + 1, + 157, + 162, + 165, + 199, + 165, + 42, + 11, + 183, + 36, + 17, + 29, + 119, + 199, + 238, + 182, + 55, + 78, + 61, + 133, + 143, + 166, + 198, + 227, + 95, + 222, + 201, + 169, + 116, + 98, + 130, + 146, + 46, + 46, + 206, + 53, + 195, + 78, + 102, + 102, + 61, + 72, + 213, + 188, + 80, + 249, + 131, + 245, + 77, + 133, + 130, + 223, + 75, + 213, + 23, + 242, + 191, + 201, + 86, + 86, + 125, + 31, + 238, + 247, + 156, + 242, + 200, + 2, + 111, + 48, + 183, + 19, + 123, + 165, + 85, + 7, + 160, + 177, + 69, + 234, + 65, + 70, + 194, + 222, + 184, + 65, + 97, + 200, + 2, + 21, + 232, + 204, + 94, + 241, + 203, + 181, + 23, + 93, + 233, + 118, + 247, + 197, + 159, + 9, + 187, + 149, + 170, + 55, + 255, + 11, + 142, + 127, + 181, + 189, + 96, + 96, + 75, + 37, + 216, + 31, + 235, + 168, + 22, + 177, + 141, + 136, + 124, + 224, + 182, + 218, + 136, + 251, + 2, + 187, + 165, + 216, + 63, + 96, + 19, + 201, + 173, + 136, + 107, + 46, + 245, + 155, + 17, + 242, + 41, + 107, + 152, + 188, + 112, + 239, + 138, + 152, + 2, + 21, + 255, + 148, + 72, + 57, + 76, + 3, + 91, + 166, + 222, + 199, + 218, + 209, + 104, + 109, + 50, + 51, + 97, + 117, + 255, + 118, + 252, + 130, + 82, + 186, + 65, + 89, + 7, + 34, + 69, + 154, + 175, + 28, + 118, + 112, + 209, + 18, + 109, + 38, + 23, + 92, + 156, + 189, + 103, + 116, + 85, + 47, + 198, + 101, + 101, + 24, + 132, + 230, + 105, + 135, + 191, + 179, + 230, + 238, + 203, + 142, + 230, + 202, + 30, + 149, + 25, + 211, + 187, + 255, + 12, + 120, + 108, + 212, + 102, + 122, + 183, + 138, + 223, + 19, + 188, + 90, + 97, + 166, + 142, + 190, + 9, + 243, + 24, + 176, + 170, + 37, + 210, + 202, + 183, + 21, + 47, + 199, + 201, + 218, + 163, + 146, + 31, + 224, + 160, + 43, + 246, + 237, + 242, + 192, + 200, + 214, + 212, + 6, + 255, + 164, + 13, + 98, + 60, + 108, + 152, + 184, + 57, + 25, + 18, + 107, + 149, + 134, + 63, + 147, + 0, + 83, + 102, + 40, + 234, + 141, + 215, + 208, + 64, + 253, + 130, + 145, + 25, + 77, + 175, + 155, + 252, + 43, + 133, + 83, + 202, + 240, + 205, + 70, + 188, + 70, + 105, + 37, + 170, + 69, + 122, + 26, + 205, + 135, + 31, + 168, + 197, + 221, + 141, + 39, + 127, + 107, + 9, + 221, + 90, + 138, + 208, + 252, + 71, + 43, + 160, + 255, + 15, + 236, + 181, + 26, + 238, + 12, + 208, + 239, + 7, + 180, + 146, + 120, + 39, + 211, + 182, + 128, + 165, + 219, + 121, + 31, + 184, + 213, + 35, + 173, + 137, + 133, + 206, + 145, + 253, + 115, + 203, + 38, + 155, + 65, + 202, + 158, + 23, + 3, + 116, + 59, + 177, + 149, + 66, + 112, + 161, + 135, + 30, + 128, + 250, + 199, + 206, + 241, + 113, + 127, + 154, + 60, + 111, + 100, + 214, + 9, + 92, + 36, + 210, + 125, + 147, + 14, + 220, + 254, + 14, + 70, + 56, + 89, + 237, + 128, + 178, + 163, + 203, + 179, + 246, + 189, + 50, + 20, + 139, + 159, + 194, + 44, + 41, + 51, + 208, + 60, + 252, + 119, + 151, + 218, + 191, + 7, + 116, + 21, + 203, + 60, + 118, + 28, + 232, + 85, + 37, + 21, + 135, + 216, + 54, + 47, + 251, + 224, + 206, + 34, + 110, + 38, + 53, + 64, + 83, + 159, + 74, + 182, + 204, + 47, + 150, + 34, + 253, + 152, + 97, + 189, + 46, + 34, + 30, + 238, + 106, + 28, + 135, + 175, + 0, + 15, + 199, + 7, + 221, + 84, + 252, + 107, + 52, + 85, + 199, + 176, + 21, + 112, + 186, + 42, + 89, + 214, + 70, + 236, + 27, + 67, + 79, + 68, + 46, + 47, + 95, + 222, + 253, + 82, + 210, + 70, + 196, + 210, + 77, + 160, + 80, + 51, + 167, + 252, + 228, + 34, + 83, + 135, + 140, + 93, + 188, + 37, + 95, + 234, + 189, + 166, + 23, + 208, + 97, + 96, + 87, + 192, + 212, + 87, + 24, + 237, + 215, + 183, + 81, + 75, + 6, + 31, + 57, + 198, + 215, + 175, + 61, + 55, + 176, + 148, + 108, + 213, + 163, + 189, + 75, + 158, + 183, + 214, + 109, + 250, + 153, + 61, + 188, + 137, + 55, + 64, + 108, + 86, + 48, + 80, + 152, + 180, + 137, + 155, + 16, + 223, + 56, + 38, + 103, + 233, + 134, + 206, + 222, + 8, + 134, + 75, + 186, + 144, + 175, + 38, + 115, + 205, + 62, + 227, + 97, + 159, + 88, + 137, + 206, + 137, + 34, + 39, + 10, + 0, + 195, + 50, + 19, + 45, + 61, + 166, + 152, + 215, + 242, + 103, + 25, + 28, + 215, + 35, + 31, + 77, + 194, + 47, + 84, + 250, + 50, + 198, + 146, + 119, + 118, + 201, + 230, + 146, + 61, + 10, + 108, + 219, + 39, + 45, + 19, + 88, + 202, + 165, + 79, + 159, + 38, + 238, + 10, + 100, + 155, + 170, + 43, + 122, + 107, + 178, + 170, + 22, + 138, + 110, + 72, + 146, + 229, + 175, + 88, + 29, + 195, + 207, + 102, + 66, + 170, + 51, + 178, + 54, + 254, + 249, + 208, + 123, + 123, + 236, + 209, + 118, + 254, + 162, + 77, + 204, + 9, + 97, + 227, + 180, + 111, + 188, + 85, + 103, + 89, + 128, + 68, + 103, + 12, + 245, + 244, + 85, + 246, + 23, + 41, + 137, + 120, + 233, + 72, + 94, + 118, + 202, + 116, + 170, + 107, + 225, + 132, + 4, + 240, + 130, + 29, + 193, + 228, + 9, + 206, + 35, + 225, + 244, + 113, + 94, + 149, + 115, + 96, + 200, + 74, + 10, + 190, + 210, + 84, + 242, + 160, + 115, + 8, + 1, + 132, + 236, + 72, + 49, + 139, + 68, + 93, + 124, + 112, + 173, + 102, + 98, + 55, + 196, + 93, + 159, + 150, + 242, + 103, + 170, + 61, + 239, + 110, + 225, + 127, + 191, + 178, + 173, + 176, + 93, + 169, + 199, + 245, + 189, + 229, + 17, + 119, + 12, + 147, + 27, + 195, + 33, + 147, + 28, + 115, + 135, + 29, + 83, + 244, + 28, + 253, + 246, + 41, + 123, + 88, + 237, + 248, + 25, + 179, + 225, + 193, + 23, + 219, + 173, + 220, + 207, + 232, + 116, + 23, + 151, + 11, + 92, + 76, + 36, + 178, + 183, + 3, + 203, + 155, + 14, + 47, + 49, + 116, + 10, + 66, + 127, + 238, + 55, + 224, + 99, + 118, + 233, + 7, + 199, + 231, + 70, + 205, + 212, + 135, + 229, + 246, + 234, + 110, + 36, + 137, + 73, + 109, + 172, + 67, + 246, + 241, + 196, + 240, + 250, + 178, + 179, + 55, + 225, + 2, + 28, + 65, + 134, + 104, + 225, + 178, + 114, + 121, + 20, + 116, + 185, + 35, + 46, + 220, + 116, + 204, + 55, + 136, + 37, + 100, + 87, + 242, + 37, + 6, + 217, + 60, + 10, + 145, + 49, + 140, + 8, + 146, + 15, + 65, + 152, + 72, + 246, + 214, + 143, + 11, + 37, + 55, + 119, + 165, + 44, + 34, + 158, + 38, + 7, + 169, + 49, + 231, + 144, + 66, + 71, + 167, + 145, + 168, + 26, + 195, + 134, + 105, + 202, + 245, + 158, + 222, + 114, + 91, + 127, + 99, + 53, + 197, + 103, + 205, + 187, + 231, + 254, + 55, + 208, + 58, + 61, + 67, + 45, + 244, + 224, + 228, + 25, + 79, + 42, + 31, + 140, + 68, + 7, + 38, + 120, + 113, + 229, + 100, + 212, + 241, + 71, + 115, + 154, + 80, + 232, + 191, + 251, + 170, + 120, + 112, + 193, + 149, + 20, + 252, + 80, + 236, + 93, + 7, + 32, + 225, + 156, + 179, + 117, + 166, + 69, + 10, + 30, + 200, + 109, + 222, + 184, + 79, + 162, + 185, + 22, + 9, + 48, + 202, + 140, + 98, + 117, + 253, + 204, + 226, + 197, + 4, + 106, + 162, + 3, + 163, + 130, + 95, + 245, + 59, + 134, + 247, + 70, + 125, + 171, + 171, + 167, + 66, + 40, + 66, + 86, + 139, + 125, + 11, + 128, + 179, + 102, + 46, + 252, + 105, + 224, + 220, + 188, + 187, + 5, + 75, + 251, + 84, + 239, + 72, + 38, + 244, + 204, + 160, + 211, + 185, + 218, + 162, + 30, + 253, + 79, + 58, + 192, + 177, + 193, + 144, + 89, + 194, + 62, + 32, + 23, + 132, + 77, + 195, + 131, + 163, + 134, + 97, + 64, + 122, + 229, + 91, + 206, + 168, + 177, + 243, + 189, + 186, + 175, + 78, + 240, + 142, + 42, + 213, + 27, + 14, + 10, + 63, + 200, + 179, + 65, + 231, + 90, + 166, + 66, + 93, + 228, + 122, + 31, + 80, + 133, + 58, + 113, + 4, + 152, + 113, + 201, + 123, + 226, + 26, + 114, + 232, + 204, + 157, + 52, + 255, + 138, + 76, + 27, + 111, + 204, + 211, + 251, + 170, + 12, + 155, + 15, + 28, + 235, + 77, + 84, + 220, + 13, + 251, + 113, + 83, + 129, + 96, + 148, + 175, + 89, + 20, + 80, + 91, + 33, + 64, + 44, + 29, + 196, + 250, + 8, + 237, + 129, + 33, + 160, + 219, + 140, + 215, + 187, + 183, + 72, + 47, + 164, + 129, + 198, + 67, + 17, + 231, + 155, + 198, + 205, + 188, + 225, + 220, + 211, + 30, + 66, + 79, + 254, + 82, + 111, + 135, + 3, + 84, + 36, + 17, + 100, + 166, + 21, + 78, + 123, + 168, + 254, + 94, + 81, + 74, + 114, + 96, + 222, + 3, + 244, + 40, + 204, + 7, + 6, + 100, + 189, + 17, + 213, + 140, + 168, + 155, + 153, + 254, + 163, + 105, + 190, + 208, + 43, + 102, + 151, + 101, + 129, + 230, + 56, + 2, + 215, + 221, + 119, + 221, + 149, + 245, + 109, + 155, + 111, + 112, + 229, + 222, + 164, + 32, + 133, + 218, + 7, + 177, + 156, + 224, + 191, + 2, + 194, + 153, + 27, + 44, + 47, + 125, + 251, + 73, + 212, + 199, + 200, + 152, + 42, + 53, + 220, + 2, + 180, + 127, + 220, + 153, + 178, + 178, + 6, + 29, + 1, + 138, + 132, + 222, + 237, + 246, + 120, + 218, + 124, + 121, + 8, + 169, + 102, + 65, + 92, + 14, + 76, + 183, + 132, + 230, + 130, + 232, + 29, + 23, + 175, + 251, + 96, + 7, + 225, + 39, + 33, + 134, + 209, + 37, + 242, + 85, + 201, + 224, + 157, + 205, + 119, + 107, + 26, + 200, + 14, + 144, + 50, + 179, + 67, + 86, + 101, + 63, + 129, + 161, + 148, + 160, + 2, + 131, + 28, + 182, + 39, + 130, + 161, + 22, + 153, + 235, + 92, + 189, + 20, + 141, + 189, + 218, + 31, + 106, + 12, + 191, + 172, + 79, + 92, + 66, + 59, + 103, + 96, + 21, + 239, + 13, + 30, + 12, + 79, + 115, + 177, + 104, + 250, + 155, + 212, + 170, + 211, + 1, + 173, + 198, + 130, + 99, + 205, + 172, + 86, + 109, + 75, + 169, + 238, + 226, + 135, + 184, + 248, + 134, + 207, + 155, + 65, + 202, + 83, + 8, + 238, + 148, + 196, + 54, + 8, + 41, + 7, + 224, + 46, + 245, + 13, + 85, + 186, + 215, + 165, + 92, + 100, + 58, + 81, + 42, + 165, + 244, + 90, + 224, + 15, + 204, + 119, + 103, + 243, + 178, + 156, + 219, + 100, + 197, + 47, + 183 + ], + "kyber_ciphertext": [], + "kyber_public_key": [], + "argon2_salt": [ + 131, + 230, + 212, + 19, + 192, + 210, + 172, + 82, + 17, + 62, + 166, + 144, + 191, + 23, + 217, + 193 + ], + "argon2_params": "$argon2id$v=19$m=19456,t=2,p=1$g+bUE8DSrFIRPqaQvxfZwQ", + "aes_nonce": [ + 204, + 161, + 94, + 101, + 243, + 176, + 204, + 54, + 214, + 120, + 17, + 149 + ], + "encryption_version": 2, + "created_at": "2026-09-15T19:24:37.510150244Z" +} \ No newline at end of file diff --git a/crates/wallet-data/tests/fixtures/cli-wallets/readme.md b/crates/wallet-data/tests/fixtures/cli-wallets/readme.md index ad2c54c..7548140 100644 --- a/crates/wallet-data/tests/fixtures/cli-wallets/readme.md +++ b/crates/wallet-data/tests/fixtures/cli-wallets/readme.md @@ -15,3 +15,8 @@ basket hold race lonely fit walk`), so nothing here is secret. `keystore.rs` must open every one of them, and a wallet it writes must open in the CLI. If the CLI's format changes, add the new file here rather than editing an old one. + +- `crystal_alice.json`, `crystal_bob.json`: the dev-chain accounts, written + by `quantus developer create-test-wallets` (CLI 2.2.2), empty password, + raw-seed ML-DSA-87 keys with no phrase. Funded on `quantus-node --dev`; + worthless anywhere else. diff --git a/crates/wallet-entities/src/lib.rs b/crates/wallet-entities/src/lib.rs index 6bae378..c66c10d 100644 --- a/crates/wallet-entities/src/lib.rs +++ b/crates/wallet-entities/src/lib.rs @@ -68,8 +68,9 @@ pub struct ChainStatus { pub endpoint: Option, pub spec_version: Option, pub transaction_version: Option, + pub best_number: Option, pub finalized_number: Option, - /// Seconds since the last finalized head arrived; `None` when never. + /// Seconds since the last best head arrived; `None` when never. pub head_age_seconds: Option, /// The last error, when disconnected. pub last_error: Option, @@ -102,8 +103,92 @@ pub struct AccountBalance { pub total: Amount, pub nonce: u64, pub high_security: Option, - /// The finalized block the numbers were read at. - pub at_block: Option, + /// The best block the numbers were read at. + pub at_block: u64, + /// The chain's finalized height at the time, so the UI can say how + /// many confirmations deep `at_block` is. + pub finalized_block: Option, +} + +/// A call decoded from its bytes for the review screen: the pallet, the +/// call, and each argument rendered for a person (addresses as SS58, +/// amounts in the asset's units, everything else as the chain names it). +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)] +#[ts(export)] +pub struct CallSummary { + pub pallet: String, + pub call: String, + pub fields: Vec, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)] +#[ts(export)] +pub struct CallField { + pub name: String, + pub value: String, +} + +/// A reversible transfer still waiting to execute. +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)] +#[ts(export)] +pub struct PendingReversible { + pub tx_id: String, + pub from: String, + pub to: String, + pub guardian: String, + pub amount: Amount, + /// When it executes, as the scheduler records it: a block number, or a + /// timestamp in milliseconds, whichever the delay was given in. + pub execute_at_block: Option, + pub execute_at_ms: Option, + /// Whether the open wallet's account may cancel it (sender for a + /// one-time delay, guardian for a high-security account). + pub cancellable_by_me: bool, +} + +/// A transaction prepared for review: what will be signed, decoded from +/// the bytes, and what it costs. `id` is handed back to submit it. +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)] +#[ts(export)] +pub struct PreparedTransferInfo { + pub id: String, + pub chain: ChainId, + pub from: String, + pub summary: CallSummary, + pub fee: Amount, + pub nonce: u64, + /// Blocks the transaction stays valid for from the block it was built at. + pub valid_for_blocks: u64, +} + +/// One step in a submitted transaction's life, as emitted on `tx:status`. +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)] +#[serde(tag = "stage", rename_all = "snake_case")] +#[ts(export)] +pub enum TxStage { + Submitted, + InBlock { + block: String, + }, + Finalized { + block: String, + }, + Failed { + block: Option, + reason: String, + }, + Dropped { + reason: String, + }, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)] +#[ts(export)] +pub struct TxStatusInfo { + /// The prepared transaction's id. + pub id: String, + pub hash: String, + pub stage: TxStage, } /// What kind of thing an asset is on its chain. @@ -155,6 +240,49 @@ impl Amount { Self { raw, decimals } } + /// Parse the human form exactly: `1.2345` at 12 decimals is + /// `1234500000000`. More fractional digits than the asset has, a sign, + /// an exponent, or anything that is not digits and one point is refused. + pub fn parse(text: &str, decimals: u8) -> Result { + let t = text.trim(); + if t.is_empty() { + return Err("empty amount".into()); + } + let (whole, frac) = match t.split_once('.') { + Some((w, f)) => (w, f), + None => (t, ""), + }; + if whole.is_empty() && frac.is_empty() { + return Err("no digits".into()); + } + if !whole.chars().all(|c| c.is_ascii_digit()) || !frac.chars().all(|c| c.is_ascii_digit()) { + return Err(format!("{t:?} is not a plain decimal number")); + } + if frac.len() > usize::from(decimals) { + return Err(format!( + "at most {decimals} decimal places, {t:?} has {}", + frac.len() + )); + } + let scale = 10u128.pow(u32::from(decimals)); + let whole_n: u128 = if whole.is_empty() { + 0 + } else { + whole.parse().map_err(|_| "too large".to_string())? + }; + let mut frac_n: u128 = if frac.is_empty() { + 0 + } else { + frac.parse().map_err(|_| "too large".to_string())? + }; + frac_n *= 10u128.pow(u32::from(decimals) - frac.len() as u32); + let raw = whole_n + .checked_mul(scale) + .and_then(|w| w.checked_add(frac_n)) + .ok_or("too large")?; + Ok(Self { raw, decimals }) + } + /// The human form, exact: `1234500000000` at 12 decimals is `1.2345`. pub fn to_decimal_string(&self) -> String { let scale = 10u128.pow(u32::from(self.decimals)); @@ -314,6 +442,25 @@ mod tests { assert_eq!(Amount::new(0, 12).to_decimal_string(), "0"); } + #[test] + fn amount_parses_exactly_and_refuses_what_it_cannot_represent() { + assert_eq!(Amount::parse("1.2345", 12).unwrap().raw, 1_234_500_000_000); + assert_eq!(Amount::parse("7", 12).unwrap().raw, 7_000_000_000_000); + assert_eq!(Amount::parse(".5", 12).unwrap().raw, 500_000_000_000); + assert_eq!(Amount::parse("0.000000000001", 12).unwrap().raw, 1); + assert!(Amount::parse("0.0000000000001", 12).is_err()); + assert!(Amount::parse("-1", 12).is_err()); + assert!(Amount::parse("1e3", 12).is_err()); + assert!(Amount::parse("1,000", 12).is_err()); + assert!(Amount::parse("", 12).is_err()); + assert!(Amount::parse(".", 12).is_err()); + let round = Amount::new(u128::MAX / 2, 12); + assert_eq!( + Amount::parse(&round.to_decimal_string(), 12).unwrap(), + round + ); + } + #[test] fn amount_survives_json_as_a_string() { let a = Amount::new(u128::MAX, 12); diff --git a/ui/src/api/generated/AccountBalance.ts b/ui/src/api/generated/AccountBalance.ts index d14b7e2..ae6eb1a 100644 --- a/ui/src/api/generated/AccountBalance.ts +++ b/ui/src/api/generated/AccountBalance.ts @@ -16,6 +16,11 @@ spendable: Amount, */ total: Amount, nonce: bigint, high_security: HighSecurityInfo | null, /** - * The finalized block the numbers were read at. + * The best block the numbers were read at. */ -at_block: bigint | null, }; +at_block: bigint, +/** + * The chain's finalized height at the time, so the UI can say how + * many confirmations deep `at_block` is. + */ +finalized_block: bigint | null, }; diff --git a/ui/src/api/generated/CallField.ts b/ui/src/api/generated/CallField.ts new file mode 100644 index 0000000..d8156bc --- /dev/null +++ b/ui/src/api/generated/CallField.ts @@ -0,0 +1,3 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. + +export type CallField = { name: string, value: string, }; diff --git a/ui/src/api/generated/CallSummary.ts b/ui/src/api/generated/CallSummary.ts new file mode 100644 index 0000000..4de4a89 --- /dev/null +++ b/ui/src/api/generated/CallSummary.ts @@ -0,0 +1,9 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { CallField } from "./CallField"; + +/** + * A call decoded from its bytes for the review screen: the pallet, the + * call, and each argument rendered for a person (addresses as SS58, + * amounts in the asset's units, everything else as the chain names it). + */ +export type CallSummary = { pallet: string, call: string, fields: Array, }; diff --git a/ui/src/api/generated/ChainStatus.ts b/ui/src/api/generated/ChainStatus.ts index e843f94..17c9eb7 100644 --- a/ui/src/api/generated/ChainStatus.ts +++ b/ui/src/api/generated/ChainStatus.ts @@ -9,9 +9,9 @@ export type ChainStatus = { chain: ChainId, connected: boolean, /** * The endpoint currently in use, or the last one tried. */ -endpoint: string | null, spec_version: number | null, transaction_version: number | null, finalized_number: bigint | null, +endpoint: string | null, spec_version: number | null, transaction_version: number | null, best_number: bigint | null, finalized_number: bigint | null, /** - * Seconds since the last finalized head arrived; `None` when never. + * Seconds since the last best head arrived; `None` when never. */ head_age_seconds: bigint | null, /** diff --git a/ui/src/api/generated/PendingReversible.ts b/ui/src/api/generated/PendingReversible.ts new file mode 100644 index 0000000..a67bcbc --- /dev/null +++ b/ui/src/api/generated/PendingReversible.ts @@ -0,0 +1,17 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { Amount } from "./Amount"; + +/** + * A reversible transfer still waiting to execute. + */ +export type PendingReversible = { tx_id: string, from: string, to: string, guardian: string, amount: Amount, +/** + * When it executes, as the scheduler records it: a block number, or a + * timestamp in milliseconds, whichever the delay was given in. + */ +execute_at_block: bigint | null, execute_at_ms: bigint | null, +/** + * Whether the open wallet's account may cancel it (sender for a + * one-time delay, guardian for a high-security account). + */ +cancellable_by_me: boolean, }; diff --git a/ui/src/api/generated/PreparedTransferInfo.ts b/ui/src/api/generated/PreparedTransferInfo.ts new file mode 100644 index 0000000..ff2f0e6 --- /dev/null +++ b/ui/src/api/generated/PreparedTransferInfo.ts @@ -0,0 +1,14 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { Amount } from "./Amount"; +import type { CallSummary } from "./CallSummary"; +import type { ChainId } from "./ChainId"; + +/** + * A transaction prepared for review: what will be signed, decoded from + * the bytes, and what it costs. `id` is handed back to submit it. + */ +export type PreparedTransferInfo = { id: string, chain: ChainId, from: string, summary: CallSummary, fee: Amount, nonce: bigint, +/** + * Blocks the transaction stays valid for from the block it was built at. + */ +valid_for_blocks: bigint, }; diff --git a/ui/src/api/generated/TxStage.ts b/ui/src/api/generated/TxStage.ts new file mode 100644 index 0000000..4644466 --- /dev/null +++ b/ui/src/api/generated/TxStage.ts @@ -0,0 +1,6 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. + +/** + * One step in a submitted transaction's life, as emitted on `tx:status`. + */ +export type TxStage = { "stage": "submitted" } | { "stage": "in_block", block: string, } | { "stage": "finalized", block: string, } | { "stage": "failed", block: string | null, reason: string, } | { "stage": "dropped", reason: string, }; diff --git a/ui/src/api/generated/TxStatusInfo.ts b/ui/src/api/generated/TxStatusInfo.ts new file mode 100644 index 0000000..bcd99ca --- /dev/null +++ b/ui/src/api/generated/TxStatusInfo.ts @@ -0,0 +1,8 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { TxStage } from "./TxStage"; + +export type TxStatusInfo = { +/** + * The prepared transaction's id. + */ +id: string, hash: string, stage: TxStage, }; diff --git a/ui/src/api/wallet.ts b/ui/src/api/wallet.ts index e3b0554..da46216 100644 --- a/ui/src/api/wallet.ts +++ b/ui/src/api/wallet.ts @@ -9,6 +9,8 @@ import type { AppInfo } from './generated/AppInfo' import type { ChainId } from './generated/ChainId' import type { ChainProfile } from './generated/ChainProfile' import type { ChainStatus } from './generated/ChainStatus' +import type { PendingReversible } from './generated/PendingReversible' +import type { PreparedTransferInfo } from './generated/PreparedTransferInfo' import type { CreationStart } from './generated/CreationStart' import type { SessionStatusInfo } from './generated/SessionStatusInfo' import type { SignatureScheme } from './generated/SignatureScheme' @@ -128,3 +130,42 @@ export function balances(chain: ChainId): Promise { export function balancesWatch(chain: ChainId): Promise { return command('balances_watch', { chain }) } + +// Sending is two steps so the review screen shows what Rust decoded from the +// bytes: prepare returns the summary and fee under an id, submit signs and +// sends that id. Progress arrives as `tx:status` events. +export function transferPrepare( + chain: ChainId, + from: string, + to: string, + amount: string, + reversibleFor?: number, +): Promise { + return command('transfer_prepare', { + chain, + from, + to, + amount, + reversibleFor: reversibleFor ?? null, + }) +} + +export function transferSubmit(id: string): Promise { + return command('transfer_submit', { id }) +} + +export function transferDiscard(id: string): Promise { + return command('transfer_discard', { id }) +} + +export function reversiblePending(chain: ChainId, address: string): Promise { + return command('reversible_pending', { chain, address }) +} + +export function reversibleCancelPrepare( + chain: ChainId, + from: string, + txId: string, +): Promise { + return command('reversible_cancel_prepare', { chain, from, txId }) +}