From 3513a6c0ef975117d0828bd175cd7f605622ad12 Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Tue, 27 Jan 2026 04:19:26 +0530 Subject: [PATCH 1/7] feat: Impl V2 CommitFinalize --- .github/workflows/run-tests.yml | 5 + Cargo.toml | 1 + src/discriminator.rs | 4 + src/entrypoint.rs | 4 +- src/error.rs | 3 + src/instruction_builder/mod.rs | 6 + src/instruction_builder/v2_commit_finalize.rs | 96 +++++++ .../v2_commit_finalize_from_buffer.rs | 71 +++++ src/lib.rs | 117 ++++---- src/pod_view.rs | 12 +- src/processor/fast/commit_diff.rs | 3 +- src/processor/fast/commit_diff_from_buffer.rs | 3 +- src/processor/fast/commit_finalize.rs | 3 +- .../fast/commit_finalize_from_buffer.rs | 3 +- src/processor/fast/commit_state.rs | 1 - .../fast/commit_state_from_buffer.rs | 3 +- src/processor/fast/delegate.rs | 7 +- src/processor/fast/finalize.rs | 5 +- src/processor/fast/undelegate.rs | 1 - .../fast/undelegate_confined_account.rs | 1 - src/v2/instruction.rs | 73 +++-- src/v2/mod.rs | 1 - src/v2/processor/commit_finalize.rs | 96 +++++++ .../processor/commit_finalize_from_buffer.rs | 74 ++++++ src/v2/processor/hyper_commit_finalize.rs | 104 ++++++++ .../internal/commit_finalize_internal.rs | 160 +++++++++++ .../processor/internal/delegate_internal.rs | 30 ++- src/v2/processor/internal/mod.rs | 2 + src/v2/processor/mod.rs | 6 + src/v2/requires.rs | 99 ++++--- src/v2/state/delegation_state.rs | 87 ++++-- src/v2/state/types.rs | 65 ++++- tests/fixtures/accounts.rs | 10 +- tests/test_v2_commit_finalize.rs | 249 ++++++++++++++++++ tests/test_v2_commit_finalize_from_buffer.rs | 210 +++++++++++++++ tests/test_v2_hyper_commit_finalize.rs | 189 +++++++++++++ 36 files changed, 1588 insertions(+), 216 deletions(-) create mode 100644 src/instruction_builder/v2_commit_finalize.rs create mode 100644 src/instruction_builder/v2_commit_finalize_from_buffer.rs create mode 100644 src/v2/processor/commit_finalize.rs create mode 100644 src/v2/processor/commit_finalize_from_buffer.rs create mode 100644 src/v2/processor/hyper_commit_finalize.rs create mode 100644 src/v2/processor/internal/commit_finalize_internal.rs create mode 100644 tests/test_v2_commit_finalize.rs create mode 100644 tests/test_v2_commit_finalize_from_buffer.rs create mode 100644 tests/test_v2_hyper_commit_finalize.rs diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 02e477a0..725fe180 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -85,6 +85,11 @@ jobs: export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" cargo test-sbf --features unit_test_config + - name: run tests (with use-unsafe) + run: | + export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" + cargo test-sbf --features unit_test_config use-unsafe + - name: compile production version for integration tests run: | export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" diff --git a/Cargo.toml b/Cargo.toml index ce1ed002..6c790522 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ default = ["program", "solana-security-txt"] unit_test_config = [] log-cost = [] logging = [] +unsafe = [] [dependencies] bincode = { version = "^1.3" } diff --git a/src/discriminator.rs b/src/discriminator.rs index 1af1d58d..fa318071 100644 --- a/src/discriminator.rs +++ b/src/discriminator.rs @@ -64,4 +64,8 @@ impl DlpDiscriminator { pub fn name(&self) -> &'static str { self.into() } + + pub const fn index(self) -> usize { + self as usize + } } diff --git a/src/entrypoint.rs b/src/entrypoint.rs index 4bd70a8d..ddc74aa5 100644 --- a/src/entrypoint.rs +++ b/src/entrypoint.rs @@ -17,12 +17,12 @@ pub unsafe extern "C" fn entrypoint(input: *mut u8) -> u64 { core::mem::MaybeUninit::::uninit(); let mut accounts = [UNINIT; { pinocchio::MAX_TX_ACCOUNTS }]; - let (program_id, count, data) = pinocchio::entrypoint::deserialize::< + let (_program_id, count, data) = pinocchio::entrypoint::deserialize::< { pinocchio::MAX_TX_ACCOUNTS }, >(input, &mut accounts); + // 23 CU so far match fast_process_instruction( - program_id, core::slice::from_raw_parts(accounts.as_ptr() as _, count), data, ) { diff --git a/src/error.rs b/src/error.rs index ad12d704..668c2a1d 100644 --- a/src/error.rs +++ b/src/error.rs @@ -149,6 +149,9 @@ pub enum DlpError { #[error("Account cannot be delegated to the system program")] DelegationToSystemProgramNotAllowed = 42, + #[error("Account cannot be delegated to the system program")] + InstructionNotFound = 43, + #[error("An infallible error is encountered possibly due to logic error")] InfallibleError = 100, } diff --git a/src/instruction_builder/mod.rs b/src/instruction_builder/mod.rs index 66eef03b..14a9623f 100644 --- a/src/instruction_builder/mod.rs +++ b/src/instruction_builder/mod.rs @@ -41,3 +41,9 @@ pub use undelegate::*; pub use undelegate_confined_account::*; pub use validator_claim_fees::*; pub use whitelist_validator_for_program::*; + +mod v2_commit_finalize; +mod v2_commit_finalize_from_buffer; + +pub use v2_commit_finalize::*; +pub use v2_commit_finalize_from_buffer::*; diff --git a/src/instruction_builder/v2_commit_finalize.rs b/src/instruction_builder/v2_commit_finalize.rs new file mode 100644 index 00000000..01d5c879 --- /dev/null +++ b/src/instruction_builder/v2_commit_finalize.rs @@ -0,0 +1,96 @@ +use solana_program::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + system_program, +}; + +use crate::{ + pod_view::PodView, + total_size_budget, + v2::{CommitFinalizeArgs, DelegationStateHeader, DlpInstruction}, + AccountSizeClass, DLP_PROGRAM_DATA_SIZE_CLASS, +}; + +pub const MAX_CU_COMMIT_FINALIZE: u32 = 2000; + +/// Builds a commit finalize instruction. +/// See [crate::processor::process_commit_finalize] for docs. +pub fn v2_commit_finalize( + validator: Pubkey, + delegated_account: Pubkey, + args: &mut CommitFinalizeArgs, + state_or_diff: &[u8], +) -> Instruction { + println!("v2_commit_finalize"); + let delegation_state = Pubkey::find_program_address( + &[DelegationStateHeader::SEED, delegated_account.as_ref()], + &crate::id(), + ) + .0; + + // let validator_fees_vault = Pubkey::find_program_address( + // validator_fees_vault_seeds_from_validator!(validator), + // &crate::id(), + // ) + // .0; + + Instruction { + program_id: crate::id(), + accounts: vec![ + AccountMeta::new_readonly(validator, true), + AccountMeta::new(delegated_account, false), + AccountMeta::new(delegation_state, false), + // AccountMeta::new_readonly(validator_fees_vault, false), + AccountMeta::new_readonly(system_program::id(), false), + ], + data: [ + DlpInstruction::CommitFinalize.to_vec(), + args.to_bytes(), + state_or_diff.to_vec(), + ] + .concat(), + } +} + +pub fn v2_hyper_commit_finalize( + validator: Pubkey, + delegated_account: Pubkey, + args: &mut CommitFinalizeArgs, + state_or_diff: &[u8], +) -> Instruction { + println!("v2_commit_finalize_ugly"); + Instruction { + program_id: crate::id(), + accounts: vec![ + AccountMeta::new_readonly(validator, true), + AccountMeta::new(delegated_account, false), + // AccountMeta::new_readonly(system_program::id(), false), + ], + data: [ + DlpInstruction::HyperCommitFinalize.to_vec(), + args.to_bytes(), + state_or_diff.to_vec(), + ] + .concat(), + } +} + +/// +/// Returns accounts-data-size budget for commit_finalize instruction. +/// +/// This value can be used with ComputeBudgetInstruction::SetLoadedAccountsDataSizeLimit +/// +pub fn v2_commit_finalize_size_budget( + delegated_account: AccountSizeClass, +) -> u32 { + total_size_budget(&[ + DLP_PROGRAM_DATA_SIZE_CLASS, + AccountSizeClass::Tiny, // validator + delegated_account, // delegated_account + AccountSizeClass::Tiny, // delegation_record_pda + AccountSizeClass::Tiny, // delegation_metadata_pda + AccountSizeClass::Tiny, // validator_fees_vault_pda + AccountSizeClass::Tiny, // program_config_pda + AccountSizeClass::Tiny, // system_program + ]) +} diff --git a/src/instruction_builder/v2_commit_finalize_from_buffer.rs b/src/instruction_builder/v2_commit_finalize_from_buffer.rs new file mode 100644 index 00000000..26f510fb --- /dev/null +++ b/src/instruction_builder/v2_commit_finalize_from_buffer.rs @@ -0,0 +1,71 @@ +use solana_program::{ + instruction::{AccountMeta, Instruction}, + pubkey::Pubkey, + system_program, +}; + +use crate::{ + pod_view::PodView, + total_size_budget, + v2::{CommitFinalizeArgs, DelegationStateHeader, DlpInstruction}, + AccountSizeClass, DLP_PROGRAM_DATA_SIZE_CLASS, +}; + +pub const MAX_CU_COMMIT_FINALIZE_FROM_BUFFER: u32 = 2000; + +/// Builds a commit state from buffer instruction. +/// See [crate::processor::process_commit_diff_from_buffer] for docs. +pub fn v2_commit_finalize_from_buffer( + validator: Pubkey, + delegated_account: Pubkey, + data_buffer: Pubkey, + commit_args: &mut CommitFinalizeArgs, +) -> Instruction { + let delegation_state = Pubkey::find_program_address( + &[DelegationStateHeader::SEED, delegated_account.as_ref()], + &crate::id(), + ) + .0; + + // let validator_fees_vault = Pubkey::find_program_address( + // validator_fees_vault_seeds_from_validator!(validator), + // &crate::id(), + // ) + // .0; + + Instruction { + program_id: crate::id(), + accounts: vec![ + AccountMeta::new_readonly(validator, true), + AccountMeta::new(delegated_account, false), + AccountMeta::new(delegation_state, false), + AccountMeta::new_readonly(data_buffer, false), + // AccountMeta::new_readonly(validator_fees_vault, false), + AccountMeta::new_readonly(system_program::id(), false), + ], + data: [ + DlpInstruction::CommitFinalizeFromBuffer.to_vec(), + commit_args.to_bytes(), + ] + .concat(), + } +} + +/// +/// Returns accounts-data-size budget for commit_diff_from_buffer instruction. +/// +/// This value can be used with ComputeBudgetInstruction::SetLoadedAccountsDataSizeLimit +/// +pub fn v2_commit_finalize_from_buffer_size_budget( + delegated_account: AccountSizeClass, +) -> u32 { + total_size_budget(&[ + DLP_PROGRAM_DATA_SIZE_CLASS, + AccountSizeClass::Tiny, // validator + delegated_account, // delegated_account + AccountSizeClass::Tiny, // delegation_state + delegated_account, // data_buffer + AccountSizeClass::Tiny, // validator_fees_vault_pda + AccountSizeClass::Tiny, // system_program + ]) +} diff --git a/src/lib.rs b/src/lib.rs index 57a1ce99..5462368f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,7 +34,7 @@ pub mod state; mod account_size_class; -mod v2; +pub mod v2; pub use account_size_class::*; @@ -75,88 +75,69 @@ solana_security_txt::security_txt! { source_code: "https://github.com/magicblock-labs/delegation-program" } +#[rustfmt::skip] +pub const GLOBAL_IX_TABLE: [v2::IxHandler; 256] = { + // start from v2 table as initial value and then write the + // other empty slots with v1 instructions so that in the + // end, we'll have a single table containing all v1 and v2 instructions + // that use pinocchio, though for non-pinocchio based instructions, we + // use fallback using InstructionNotFound error returned by the default handler. + let mut table = v2::IX_TABLE; + + use crate::discriminator::DlpDiscriminator::*; + use crate::processor::fast::*; + + table[Delegate.index()] = process_delegate; + table[DelegateWithAnyValidator.index()] = process_delegate_with_any_validator; + table[CommitState.index()] = process_commit_state; + table[CommitStateFromBuffer.index()] = process_commit_state_from_buffer; + table[CommitDiff.index()] = process_commit_diff; + table[CommitDiffFromBuffer.index()] = process_commit_diff_from_buffer; + table[CommitFinalize.index()] = process_commit_finalize; + table[CommitFinalizeFromBuffer.index()] = process_commit_finalize_from_buffer; + table[Finalize.index()] = process_finalize; + table[Undelegate.index()] = process_undelegate; + table[UndelegateConfinedAccount.index()] = process_undelegate_confined_account; + + table +}; + #[cfg(not(feature = "sdk"))] pub fn fast_process_instruction( - program_id: &pinocchio::Address, accounts: &[pinocchio::AccountView], - data: &[u8], + ixdata: &[u8], ) -> Option { - use crate::v2::DlpInstruction; + use crate::v2::process_hyper_commit_finalize; - if data.len() < 8 { + if ixdata.len() < 8 { return Some(Err( pinocchio::error::ProgramError::InvalidInstructionData, )); } - let (discriminator_bytes, data) = data.split_at(8); - - if discriminator_bytes[0] >= DlpInstruction::Delegate as u8 { - use crate::v2::v2_process_instruction; - return Some(v2_process_instruction(accounts, data)); - } - - let discriminator = match DlpDiscriminator::try_from(discriminator_bytes[0]) - { - Ok(discriminator) => discriminator, - Err(_) => { - pinocchio_log::log!("Failed to read and parse discriminator"); - return Some(Err( - pinocchio::error::ProgramError::InvalidInstructionData, - )); - } - }; + let (discriminator_bytes, data) = unsafe { ixdata.split_at_unchecked(8) }; #[cfg(feature = "logging")] msg!("Processing instruction: {:?}", discriminator); - match discriminator { - DlpDiscriminator::Delegate => Some(processor::fast::process_delegate( - program_id, accounts, data, - )), - DlpDiscriminator::DelegateWithAnyValidator => { - Some(processor::fast::process_delegate_with_any_validator( - program_id, accounts, data, - )) - } - DlpDiscriminator::CommitState => Some( - processor::fast::process_commit_state(program_id, accounts, data), - ), - DlpDiscriminator::CommitStateFromBuffer => { - Some(processor::fast::process_commit_state_from_buffer( - program_id, accounts, data, - )) - } - DlpDiscriminator::CommitDiff => Some( - processor::fast::process_commit_diff(program_id, accounts, data), - ), - DlpDiscriminator::CommitDiffFromBuffer => { - Some(processor::fast::process_commit_diff_from_buffer( - program_id, accounts, data, - )) - } - DlpDiscriminator::CommitFinalize => { - Some(processor::fast::process_commit_finalize( - program_id, accounts, data, - )) - } - DlpDiscriminator::CommitFinalizeFromBuffer => { - Some(processor::fast::process_commit_finalize_from_buffer( - program_id, accounts, data, - )) - } - DlpDiscriminator::Finalize => Some(processor::fast::process_finalize( - program_id, accounts, data, - )), - DlpDiscriminator::Undelegate => Some( - processor::fast::process_undelegate(program_id, accounts, data), - ), - DlpDiscriminator::UndelegateConfinedAccount => { - Some(processor::fast::process_undelegate_confined_account( - program_id, accounts, data, - )) + // 23 CU -- till here + + if true { + //return Some(Ok(())); + return Some(process_hyper_commit_finalize(accounts, data)); + } else { + match GLOBAL_IX_TABLE[discriminator_bytes[0] as usize](accounts, data) { + e @ Err(pinocchio::error::ProgramError::Custom(val)) => { + use crate::error::DlpError; + + if val == DlpError::InstructionNotFound as u32 { + None + } else { + Some(e) + } + } + otherwise => Some(otherwise), } - _ => None, } } diff --git a/src/pod_view.rs b/src/pod_view.rs index 8a6bd93b..57b01fa4 100644 --- a/src/pod_view.rs +++ b/src/pod_view.rs @@ -136,8 +136,16 @@ impl PodView for T { } fn try_view_from_mut(buffer: &mut [u8]) -> Result<&mut Self, ProgramError> { - bytemuck::try_from_bytes_mut(buffer) - .map_err(|_| ProgramError::InvalidArgument) + #[cfg(feature = "unsafe")] + { + Ok(unsafe { &mut *(buffer.as_mut_ptr() as *mut Self) }) + } + + #[cfg(not(feature = "unsafe"))] + { + bytemuck::try_from_bytes_mut(buffer) + .map_err(|_| ProgramError::InvalidArgument) + } } #[cfg(feature = "unit_test_config")] diff --git a/src/processor/fast/commit_diff.rs b/src/processor/fast/commit_diff.rs index 03a901cf..e261b070 100644 --- a/src/processor/fast/commit_diff.rs +++ b/src/processor/fast/commit_diff.rs @@ -1,5 +1,5 @@ use borsh::BorshDeserialize; -use pinocchio::{error::ProgramError, AccountView, Address, ProgramResult}; +use pinocchio::{error::ProgramError, AccountView, ProgramResult}; use pinocchio_log::log; use super::NewState; @@ -42,7 +42,6 @@ use crate::{ /// 3. Copy the new state to the new PDA /// 4. Init a new PDA to store the record of the new state commitment pub fn process_commit_diff( - _program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/commit_diff_from_buffer.rs b/src/processor/fast/commit_diff_from_buffer.rs index cd927cc4..8d13b144 100644 --- a/src/processor/fast/commit_diff_from_buffer.rs +++ b/src/processor/fast/commit_diff_from_buffer.rs @@ -1,5 +1,5 @@ use borsh::BorshDeserialize; -use pinocchio::{error::ProgramError, AccountView, Address, ProgramResult}; +use pinocchio::{error::ProgramError, AccountView, ProgramResult}; use pinocchio_log::log; use super::NewState; @@ -10,7 +10,6 @@ use crate::{ }; pub fn process_commit_diff_from_buffer( - _program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/commit_finalize.rs b/src/processor/fast/commit_finalize.rs index 32c5bf01..164c6309 100644 --- a/src/processor/fast/commit_finalize.rs +++ b/src/processor/fast/commit_finalize.rs @@ -1,4 +1,4 @@ -use pinocchio::{AccountView, Address, ProgramResult}; +use pinocchio::{AccountView, ProgramResult}; use pinocchio_log::log; use crate::{ @@ -28,7 +28,6 @@ use crate::{ /// Instruction Data: CommitFinalizeArgsWithBuffer /// pub fn process_commit_finalize( - _program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/commit_finalize_from_buffer.rs b/src/processor/fast/commit_finalize_from_buffer.rs index 8d2fb058..fc2e9dc4 100644 --- a/src/processor/fast/commit_finalize_from_buffer.rs +++ b/src/processor/fast/commit_finalize_from_buffer.rs @@ -1,4 +1,4 @@ -use pinocchio::{AccountView, Address, ProgramResult}; +use pinocchio::{AccountView, ProgramResult}; use pinocchio_log::log; use crate::{ @@ -44,7 +44,6 @@ use crate::{ /// 3. Copy the new state to the new PDA /// 4. Init a new PDA to store the record of the new state commitment pub fn process_commit_finalize_from_buffer( - _program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/commit_state.rs b/src/processor/fast/commit_state.rs index 8bc90623..66406b34 100644 --- a/src/processor/fast/commit_state.rs +++ b/src/processor/fast/commit_state.rs @@ -57,7 +57,6 @@ use crate::{ /// 3. Copy the new state to the new PDA /// 4. Init a new PDA to store the record of the new state commitment pub fn process_commit_state( - _program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/commit_state_from_buffer.rs b/src/processor/fast/commit_state_from_buffer.rs index eb60e9f4..16193e0a 100644 --- a/src/processor/fast/commit_state_from_buffer.rs +++ b/src/processor/fast/commit_state_from_buffer.rs @@ -1,5 +1,5 @@ use borsh::BorshDeserialize; -use pinocchio::{error::ProgramError, AccountView, Address, ProgramResult}; +use pinocchio::{error::ProgramError, AccountView, ProgramResult}; use super::NewState; use crate::{ @@ -8,7 +8,6 @@ use crate::{ }; pub fn process_commit_state_from_buffer( - _program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/delegate.rs b/src/processor/fast/delegate.rs index 6d8b379f..e1158d0c 100644 --- a/src/processor/fast/delegate.rs +++ b/src/processor/fast/delegate.rs @@ -60,24 +60,21 @@ use crate::{ /// This instruction is meant to be called via CPI with the owning program signing for the /// delegated account. pub fn process_delegate( - program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { - process_delegate_inner(program_id, accounts, data, false) + process_delegate_inner(accounts, data, false) } /// Delegates an account while allowing any validator identity. pub fn process_delegate_with_any_validator( - program_id: &Address, accounts: &[AccountView], data: &[u8], ) -> ProgramResult { - process_delegate_inner(program_id, accounts, data, true) + process_delegate_inner(accounts, data, true) } fn process_delegate_inner( - _program_id: &Address, accounts: &[AccountView], data: &[u8], allow_system_program_validator: bool, diff --git a/src/processor/fast/finalize.rs b/src/processor/fast/finalize.rs index 1da91338..e8a56311 100644 --- a/src/processor/fast/finalize.rs +++ b/src/processor/fast/finalize.rs @@ -1,7 +1,5 @@ use pinocchio::{ - address::{address_eq, Address}, - error::ProgramError, - AccountView, ProgramResult, + address::address_eq, error::ProgramError, AccountView, ProgramResult, }; use pinocchio_log::log; @@ -56,7 +54,6 @@ use crate::{ /// 3. Close the state diff account /// 4. Close the commit state record pub fn process_finalize( - _program_id: &Address, accounts: &[AccountView], _data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/undelegate.rs b/src/processor/fast/undelegate.rs index 0750f12d..5995ef1b 100644 --- a/src/processor/fast/undelegate.rs +++ b/src/processor/fast/undelegate.rs @@ -81,7 +81,6 @@ use crate::{ /// - Verify that the new state is the same as the committed state /// - Close the undelegation buffer PDA pub fn process_undelegate( - _program_id: &Address, accounts: &[AccountView], _data: &[u8], ) -> ProgramResult { diff --git a/src/processor/fast/undelegate_confined_account.rs b/src/processor/fast/undelegate_confined_account.rs index e5cea29b..f74542e2 100644 --- a/src/processor/fast/undelegate_confined_account.rs +++ b/src/processor/fast/undelegate_confined_account.rs @@ -30,7 +30,6 @@ use crate::{ /// 6: [] system program /// 7: [] delegation program data (UpgradeableLoader ProgramData of this program) pub fn process_undelegate_confined_account( - _program_id: &Address, accounts: &[AccountView], _data: &[u8], ) -> ProgramResult { diff --git a/src/v2/instruction.rs b/src/v2/instruction.rs index ed83a59b..dd627b57 100644 --- a/src/v2/instruction.rs +++ b/src/v2/instruction.rs @@ -1,7 +1,9 @@ use num_enum::TryFromPrimitive; -use pinocchio::{error::ProgramError, ProgramResult}; +use pinocchio::ProgramResult; use strum::IntoStaticStr; +use crate::error::DlpError; + #[repr(u8)] #[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoStaticStr)] #[rustfmt::skip] @@ -19,6 +21,7 @@ pub enum DlpInstruction { CommitFromBuffer = 112, CommitFinalize = 113, CommitFinalizeFromBuffer = 114, + HyperCommitFinalize = 115, /// /// Finalize group: [121, 130] => 10 slots @@ -63,50 +66,38 @@ impl DlpInstruction { pub fn name(&self) -> &'static str { self.into() } + + const fn index(self) -> usize { + self as usize + } } -pub fn v2_process_instruction( - accounts: &[pinocchio::AccountView], - data: &[u8], +#[inline(always)] +fn instruction_not_found( + _: &[pinocchio::AccountView], + _: &[u8], ) -> ProgramResult { - let (ix, data) = data.split_at(8); + Err(DlpError::InstructionNotFound.into()) +} - let ix = match DlpInstruction::try_from(ix[0]) { - Ok(discriminator) => discriminator, - Err(_) => { - pinocchio_log::log!("Failed to read and parse discriminator"); - return Err(pinocchio::error::ProgramError::InvalidInstructionData); - } - }; +pub type IxHandler = fn(&[pinocchio::AccountView], &[u8]) -> ProgramResult; +#[rustfmt::skip] +pub const IX_TABLE: [IxHandler; 256] = { use super::processor::*; - let coming_soon = || { - solana_program::msg!("Instruction {:#?} not yet implemented", ix); - return Err(ProgramError::InvalidInstructionData); - }; - - match ix { - DlpInstruction::Delegate => process_delegate(accounts, data), - DlpInstruction::DelegateWithAnyValidator => { - process_delegate_with_any_validator(accounts, data) - } - DlpInstruction::Commit => coming_soon(), - DlpInstruction::CommitFromBuffer => coming_soon(), - DlpInstruction::CommitFinalize => coming_soon(), - DlpInstruction::CommitFinalizeFromBuffer => coming_soon(), - DlpInstruction::Finalize => coming_soon(), - DlpInstruction::Undelegate => coming_soon(), - DlpInstruction::UndelegateConfinedAccount => coming_soon(), - DlpInstruction::CallHandler => coming_soon(), - DlpInstruction::InitProtocolFeesVault => coming_soon(), - DlpInstruction::ProtocolClaimFees => coming_soon(), - DlpInstruction::InitValidatorFeesVault => coming_soon(), - DlpInstruction::ValidatorClaimFees => coming_soon(), - DlpInstruction::CloseValidatorFeesVault => coming_soon(), - DlpInstruction::WhitelistValidatorForProgram => coming_soon(), - DlpInstruction::TopUpEphemeralBalance => coming_soon(), - DlpInstruction::DelegateEphemeralBalance => coming_soon(), - DlpInstruction::CloseEphemeralBalance => coming_soon(), - } -} + let mut table = [instruction_not_found as IxHandler; 256]; + + use DlpInstruction::*; + + // Delegate group + table[Delegate.index()] = process_delegate; + table[DelegateWithAnyValidator.index()] = process_delegate_with_any_validator; + + // Commit group + table[CommitFinalize.index()] = process_commit_finalize; + table[CommitFinalizeFromBuffer.index()] = process_commit_finalize_from_buffer; + table[HyperCommitFinalize.index()] = process_hyper_commit_finalize; + + table +}; diff --git a/src/v2/mod.rs b/src/v2/mod.rs index b3db3b51..b8e52771 100644 --- a/src/v2/mod.rs +++ b/src/v2/mod.rs @@ -5,5 +5,4 @@ mod state; pub use instruction::*; pub use processor::*; -pub use requires::*; pub use state::*; diff --git a/src/v2/processor/commit_finalize.rs b/src/v2/processor/commit_finalize.rs new file mode 100644 index 00000000..f476fb6a --- /dev/null +++ b/src/v2/processor/commit_finalize.rs @@ -0,0 +1,96 @@ +use bytemuck::{Pod, Zeroable}; +use pinocchio::{AccountView, ProgramResult}; +use pinocchio_log::log; + +use crate::{ + args::Boolean, + processor::fast::NewState, + v2::{ + processor::internal::{ + process_commit_finalize_internal, CommitFinalizeInternalArgs, + }, + HeaderWithBuffer, + }, + v2_require_n_accounts, DiffSet, +}; + +/// Commit a new state, or a diff, directly to the delegated account. Unlike, CommitState and +/// CommitDiff variants, this instruction does not write to any temporary account first. In other +/// words, this instruction commits and finalizes both. +/// +/// Accounts: +/// +/// 0: `[signer]` the validator requesting the commit +/// 1: `[]` the delegated account +/// 2: `[]` the delegation record +/// 3: `[writable]` the delegation metadata +/// 4: `[]` the validator fees vault +/// 5: `[]` the program config account +/// 6: `[]` system program +/// +/// Instruction Data: CommitFinalizeArgsWithBuffer +/// + +#[repr(C)] +#[derive(Copy, Clone, Pod, Zeroable)] +pub struct CommitFinalizeArgs { + /// the commit_id ensures correct ordering of commits + pub commit_id: u64, + + /// the lamports that the delegated account holds in the ephemeral validator + pub lamports: u64, + + /// whether the account can be undelegated after the commit completes + pub allow_undelegation: Boolean, + + /// whether the data (in the ixdata or in the data account) is diff or full state. + pub data_is_diff: Boolean, + + pub reserved_padding: [u8; 6], +} + +/// buffer is the diff-data or the full-bytes data +pub type CommitFinalizeArgsWithBuffer<'a> = + HeaderWithBuffer<'a, CommitFinalizeArgs>; + +pub fn process_commit_finalize( + accounts: &[AccountView], + data: &[u8], +) -> ProgramResult { + let [ + validator, // force multi-line + delegated_account, + delegation_state, + _system_program, + ] = v2_require_n_accounts!(accounts, 4); + + let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?; + + if args.data_is_diff.is_true() { + let commit_args = CommitFinalizeInternalArgs { + new_state: { + let diffset = DiffSet::try_new(args.buffer)?; + if diffset.segments_count() == 0 { + log!("WARN: noop; empty diff sent"); + } + NewState::Diff(diffset) + }, + commit_id: args.commit_id, + allow_undelegation: args.allow_undelegation.is_true(), + validator, + delegated_account, + delegation_state, + }; + process_commit_finalize_internal(commit_args) + } else { + let commit_args = CommitFinalizeInternalArgs { + new_state: NewState::FullBytes(args.buffer), + commit_id: args.commit_id, + allow_undelegation: args.allow_undelegation.is_true(), + validator, + delegated_account, + delegation_state, + }; + process_commit_finalize_internal(commit_args) + } +} diff --git a/src/v2/processor/commit_finalize_from_buffer.rs b/src/v2/processor/commit_finalize_from_buffer.rs new file mode 100644 index 00000000..252e8a28 --- /dev/null +++ b/src/v2/processor/commit_finalize_from_buffer.rs @@ -0,0 +1,74 @@ +use pinocchio::{AccountView, ProgramResult}; +use pinocchio_log::log; + +use crate::{ + pod_view::PodView, + processor::fast::NewState, + require_n_accounts, + v2::{ + processor::internal::{ + process_commit_finalize_internal, CommitFinalizeInternalArgs, + }, + CommitFinalizeArgs, + }, + DiffSet, +}; + +/// Just like CommitFinalize, commit a new state, or a diff, directly to the delegated account. Unlike CommitFinalize, the state or diff comes from a buffer account. +/// +/// Accounts: +/// +/// 0: `[signer]` the validator requesting the commit +/// 1: `[]` the delegated account +/// 2: `[]` the delegation record +/// 3: `[writable]` the delegation metadata +/// 4: `[]` the validator fees vault +/// 5: `[]` the program config account +/// 6: `[]` system program +/// +/// Instruction Data: CommitFinalizeArgs +/// +pub fn process_commit_finalize_from_buffer( + accounts: &[AccountView], + data: &[u8], +) -> ProgramResult { + let [ + validator, // force multi-line + delegated_account, + delegation_state, + buffer_account, + _system_program, + ] = require_n_accounts!(accounts, 5); + + let args = CommitFinalizeArgs::try_view_from(data)?; + + let data = buffer_account.try_borrow()?; + + if args.data_is_diff.is_true() { + let commit_args = CommitFinalizeInternalArgs { + new_state: { + let diffset = DiffSet::try_new(&data)?; + if diffset.segments_count() == 0 { + log!("WARN: noop; empty diff sent"); + } + NewState::Diff(diffset) + }, + commit_id: args.commit_id, + allow_undelegation: args.allow_undelegation.is_true(), + validator, + delegated_account, + delegation_state, + }; + process_commit_finalize_internal(commit_args) + } else { + let commit_args = CommitFinalizeInternalArgs { + new_state: NewState::FullBytes(&data), + commit_id: args.commit_id, + allow_undelegation: args.allow_undelegation.is_true(), + validator, + delegated_account, + delegation_state, + }; + process_commit_finalize_internal(commit_args) + } +} diff --git a/src/v2/processor/hyper_commit_finalize.rs b/src/v2/processor/hyper_commit_finalize.rs new file mode 100644 index 00000000..38b31976 --- /dev/null +++ b/src/v2/processor/hyper_commit_finalize.rs @@ -0,0 +1,104 @@ +use pinocchio::{error::ProgramError, AccountView, ProgramResult}; + +use crate::{ + error::DlpError, + pod_view::PodView, + v2::{ + CommitFinalizeArgsWithBuffer, DelegationStateHeader, DelegationStateMut, + }, + v2_require, v2_require_eq, v2_require_eq_keys, v2_require_ge, + v2_require_n_accounts, v2_require_signer, +}; + +/// Commit a new state, or a diff, directly to the delegated account. Unlike, CommitState and +/// CommitDiff variants, this instruction does not write to any temporary account first. In other +/// words, this instruction commits and finalizes both. +/// +/// Accounts: +/// +/// 0: `[signer]` the validator requesting the commit +/// 1: `[]` the delegated account +/// 2: `[]` the delegation record +/// 3: `[writable]` the delegation metadata +/// 4: `[]` the validator fees vault +/// 5: `[]` the program config account +/// 6: `[]` system program +/// +/// Instruction Data: CommitFinalizeArgsWithBuffer +/// + +#[inline(always)] +pub fn process_hyper_commit_finalize( + accounts: &[AccountView], + data: &[u8], +) -> ProgramResult { + //if data.len() != 0 { + // return Ok(()); + //} + + //let [ + // validator, // force multi-line + // delegated_account, + //] = v2_require_n_accounts!(accounts, 2); + + let validator = unsafe { accounts.get_unchecked(0) }; + let delegated_account = unsafe { accounts.get_unchecked(1) }; + + let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?; + + v2_require_signer!(validator); + + v2_require!( + args.data_is_diff.is_false(), + ProgramError::InvalidInstructionData + ); + + let delegated_account_lamports = delegated_account.lamports(); + + let data = unsafe { delegated_account.borrow_unchecked_mut() }; + + let (state_size, data) = unsafe { data.split_at_mut_unchecked(4) }; + + let state_size = unsafe { *(state_size.as_ptr() as *const u32) }; + + let (state_data, delegated_account_data) = + unsafe { data.split_at_mut_unchecked(state_size as usize) }; + + let (header, _) = unsafe { + state_data.split_at_mut_unchecked(DelegationStateHeader::SPACE) + }; + + let mut state_view = DelegationStateMut::from_bytes(header)?; + + if true { + v2_require_eq_keys!( + &state_view.bindings.validator_as_authority, + validator.address(), + DlpError::InvalidAuthority + ); + + v2_require_ge!( + delegated_account_lamports, + state_view.original_lamports, + DlpError::InvalidDelegatedState + ); + + v2_require_eq!( + args.commit_id, + state_view.last_commit_id + 1, + DlpError::NonceOutOfOrder + ); + + v2_require!( + state_view.is_undelegatable.is_false(), + DlpError::NonceOutOfOrder + ); + + state_view.last_commit_id = args.commit_id; + state_view.is_undelegatable = args.allow_undelegation.into(); + } + + delegated_account_data.copy_from_slice(args.buffer); + + Ok(()) +} diff --git a/src/v2/processor/internal/commit_finalize_internal.rs b/src/v2/processor/internal/commit_finalize_internal.rs new file mode 100644 index 00000000..3aca96cc --- /dev/null +++ b/src/v2/processor/internal/commit_finalize_internal.rs @@ -0,0 +1,160 @@ +use pinocchio::{error::ProgramError, AccountView}; + +use crate::{ + apply_diff_in_place, error::DlpError, pod_view::PodView, + processor::fast::NewState, v2::DelegationStateHeader, v2_require, + v2_require_eq, v2_require_eq_keys, v2_require_eq_keys_unsafe, + v2_require_ge, v2_require_owned_by, v2_require_signer, +}; + +/// Arguments for the commit state internal function +pub(crate) struct CommitFinalizeInternalArgs<'a> { + pub(crate) new_state: NewState<'a>, + pub(crate) commit_id: u64, + pub(crate) allow_undelegation: bool, + pub(crate) validator: &'a AccountView, + pub(crate) delegated_account: &'a AccountView, + pub(crate) delegation_state: &'a AccountView, +} + +#[inline(always)] +pub(crate) fn process_commit_finalize_internal( + args: CommitFinalizeInternalArgs, +) -> Result<(), ProgramError> { + // check delegated_account is actually delegated to the DLP + if true { + v2_require_signer!(args.validator); + + //// we do not really need to check this as the write will fail anyway + // v2_require_owned_by!(args.delegated_account, &crate::fast::ID); + + //DelegationStateHeader::validate(args.delegation_state)?; + + if true { + let pda = solana_sha256_hasher::hashv(&[ + DelegationStateHeader::SEED, + args.delegated_account.address().as_ref(), + &[255], // TODO: replace me with args.bump + crate::fast::ID.as_ref(), + solana_address::PDA_MARKER, + ]) + .to_bytes() + .into(); + + v2_require_eq_keys!( + &pda, + args.delegation_state.address(), + ProgramError::Immutable + ); + } + + v2_require_owned_by!(args.delegation_state, &crate::fast::ID); + + #[cfg(feature = "unsafe")] + let state_data = + unsafe { args.delegation_state.borrow_unchecked_mut() }; + + #[cfg(not(feature = "unsafe"))] + let mut state_data = args.delegation_state.try_borrow_mut()?; + + v2_require_ge!( + state_data.len(), + DelegationStateHeader::SPACE, + ProgramError::InvalidAccountData + ); + + let (header, _) = state_data.split_at_mut(DelegationStateHeader::SPACE); + + let state_view = unsafe { + &mut *(header.as_mut_ptr() as *mut DelegationStateHeader) + }; + + v2_require_eq!( + //unsafe { (header.as_ptr() as *const u64).read() }, + u64::from_le_bytes(state_view.discriminator), + DelegationStateHeader::DISCRIMINATOR_FAST, + ProgramError::InvalidAccountData + ); + + // If there was an issue with the lamport accounting in the past, abort (this should never happen) + v2_require_ge!( + args.delegated_account.lamports(), + state_view.original_lamports, + DlpError::InvalidDelegatedState + ); + + v2_require_eq!( + args.commit_id, + state_view.last_commit_id + 1, + DlpError::NonceOutOfOrder + ); + + v2_require!( + state_view.is_undelegatable.is_false(), + DlpError::NonceOutOfOrder + ); + + state_view.last_commit_id = args.commit_id; + state_view.is_undelegatable = args.allow_undelegation.into(); + + if true { + // key comparision cost: 12 CU + v2_require_eq_keys!( + &state_view.bindings.delegated_account, + args.delegated_account.address(), + DlpError::InvalidAuthority + ); + + v2_require_eq_keys!( + &state_view.bindings.validator_as_authority, + args.validator.address(), + DlpError::InvalidAuthority + ); + + // TODO (snawaz): why do we need validator_fees_vault here? + // v2_require_eq_keys!( + // &state_view.bindings.validator_fees_vault, + // args.validator_fees_vault.address(), + // DlpError::InvalidAuthority + // ); + } else if false { + // key comparision cost: 12 CU + unsafe { + v2_require_eq_keys_unsafe!( + &state_view.bindings.delegated_account, + args.delegated_account.address(), + DlpError::InvalidAuthority + ); + + v2_require_eq_keys_unsafe!( + &state_view.bindings.validator_as_authority, + args.validator.address(), + DlpError::InvalidAuthority + ); + } + } + } + + if args.delegated_account.data_len() != args.new_state.data_len() { + args.delegated_account.resize(args.new_state.data_len())?; + } + + // copy the new state to the delegated account + #[cfg(feature = "unsafe")] + let mut delegated_account_data = + unsafe { args.delegated_account.borrow_unchecked_mut() }; + + #[cfg(not(feature = "unsafe"))] + let mut delegated_account_data = args.delegated_account.try_borrow_mut()?; + + match args.new_state { + NewState::FullBytes(bytes) => { + (*delegated_account_data).copy_from_slice(bytes) + } + NewState::Diff(diff) => { + apply_diff_in_place(&mut delegated_account_data, &diff)?; + } + } + + Ok(()) +} diff --git a/src/v2/processor/internal/delegate_internal.rs b/src/v2/processor/internal/delegate_internal.rs index fd9b91ce..5f8898f0 100644 --- a/src/v2/processor/internal/delegate_internal.rs +++ b/src/v2/processor/internal/delegate_internal.rs @@ -1,4 +1,3 @@ -use borsh::BorshDeserialize; use bytemuck::{Pod, Zeroable}; use pinocchio::{ address::address_eq, @@ -15,28 +14,31 @@ use crate::{ args::ArgsWithBuffer, consts::RENT_EXCEPTION_ZERO_BYTES_LAMPORTS, error::DlpError, - pda, + pda::{self}, pod_view::PodView, processor::{fast::utils::pda::create_pda, utils::curve::is_on_curve_fast}, - v2::{DelegationState, DelegationStateHeader, ValidatedDelegationBindings}, - v2_require, v2_require_eq_keys, v2_require_n_accounts, v2_require_owned_by, + v2::{DelegationStateHeader, ValidatedDelegationBindings}, + v2_require_eq_keys, v2_require_n_accounts, v2_require_owned_by, v2_require_pda_fast, v2_require_signer, v2_require_uninitialized_pda, + validator_fees_vault_seeds_from_validator, }; #[repr(C)] #[derive(Clone, Copy, Pod, Zeroable)] struct DelegateArgsHeader { + /// The validator authority that is added to the delegation record + pub validator: Address, + /// The frequency at which the validator should commit the account data /// if no commit is triggered by the owning program pub commit_frequency_ms: u32, - /// The seeds used to derive the PDA of the delegated account - /// The validator authority that is added to the delegation record - pub validator: Address, + /// The seeds used to derive the PDA of the delegated account delegate_buffer_bump: u8, delegation_state_bump: u8, + validator_fees_vault_bump: u8, - reserved_padding0: [u8; 2], + reserved_padding0: [u8; 1], //pub seeds: Vec>, } @@ -177,17 +179,23 @@ pub(crate) fn process_delegate_internal< //let mut delegation_state_view = // DelegationState::from_bytes(&mut delegation_state_data)?; + let validator_fees_vault = Address::find_program_address( + validator_fees_vault_seeds_from_validator!(args.validator), + &crate::fast::ID, + ) + .0; + // Initialize the delegation record let header = DelegationStateHeader { discriminator: DelegationStateHeader::DISCRIMINATOR, original_owner: owner_program.address().to_bytes().into(), delegation_slot: Clock::get()?.slot, - lamports: delegated_account.lamports(), + original_lamports: delegated_account.lamports(), commit_frequency_ms: args.commit_frequency_ms as u64, bindings: ValidatedDelegationBindings { - delegation_account: *delegated_account.address(), + delegated_account: *delegated_account.address(), validator_as_authority: args.validator, - // validator_fees_vault: validator_fees_vault + validator_fees_vault, }, last_commit_id: 0, rent_payer: payer.address().to_bytes().into(), diff --git a/src/v2/processor/internal/mod.rs b/src/v2/processor/internal/mod.rs index 36fe9d04..05762cc9 100644 --- a/src/v2/processor/internal/mod.rs +++ b/src/v2/processor/internal/mod.rs @@ -1,3 +1,5 @@ +mod commit_finalize_internal; mod delegate_internal; +pub(crate) use commit_finalize_internal::*; pub(crate) use delegate_internal::*; diff --git a/src/v2/processor/mod.rs b/src/v2/processor/mod.rs index 60af3b17..9b7eda3e 100644 --- a/src/v2/processor/mod.rs +++ b/src/v2/processor/mod.rs @@ -1,4 +1,10 @@ +mod commit_finalize; +mod commit_finalize_from_buffer; mod delegate; +mod hyper_commit_finalize; mod internal; +pub use commit_finalize::*; +pub use commit_finalize_from_buffer::*; pub use delegate::*; +pub use hyper_commit_finalize::*; diff --git a/src/v2/requires.rs b/src/v2/requires.rs index cc487944..279a4531 100644 --- a/src/v2/requires.rs +++ b/src/v2/requires.rs @@ -1,17 +1,6 @@ -use pinocchio::{ - address::{address_eq, Address}, - error::ProgramError, - AccountView, -}; -use pinocchio_log::log; +use pinocchio::Address; -use crate::{ - error::DlpError, - pda::{ - self, program_config_from_program_id, - validator_fees_vault_pda_from_validator, - }, -}; +use core::ptr::read; // require true #[macro_export] @@ -30,7 +19,7 @@ macro_rules! v2_require { macro_rules! v2_require_signer { ($info: expr) => {{ if !$info.is_signer() { - log!("require_signer!({}): ", stringify!($info)); + pinocchio_log::log!("require_signer!({}): ", stringify!($info)); $info.address().log(); return Err(ProgramError::MissingRequiredSignature); } @@ -54,6 +43,43 @@ macro_rules! v2_require_eq_keys { }}; } +#[inline(always)] +pub unsafe fn unsafe_address_eq(a1: &Address, a2: &Address) -> bool { + if true { + let p1_ptr = a1.as_array().as_ptr().cast::(); + let p2_ptr = a2.as_array().as_ptr().cast::(); + + read(p1_ptr) == read(p2_ptr) + && read(p1_ptr.add(1)) == read(p2_ptr.add(1)) + && read(p1_ptr.add(2)) == read(p2_ptr.add(2)) + && read(p1_ptr.add(3)) == read(p2_ptr.add(3)) + } else { + let a1: &[[u8; 8]; 4] = bytemuck::cast_ref(a1.as_array()); + let a2: &[[u8; 8]; 4] = bytemuck::cast_ref(a2.as_array()); + + u64::from_le_bytes(a1[0]) == u64::from_le_bytes(a2[0]) + && u64::from_le_bytes(a1[1]) == u64::from_le_bytes(a2[1]) + && u64::from_le_bytes(a1[2]) == u64::from_le_bytes(a2[2]) + && u64::from_le_bytes(a1[3]) == u64::from_le_bytes(a2[3]) + } +} +// require key1 == key2 +#[macro_export] +macro_rules! v2_require_eq_keys_unsafe { + ( $key1:expr, $key2:expr, $error:expr) => {{ + if !$crate::v2::requires::unsafe_address_eq($key1, $key2) { + pinocchio_log::log!( + "require_eq_keys!({}, {}) failed: ", + stringify!($key1), + stringify!($key2) + ); + $key1.log(); + $key2.log(); + return Err($error.into()); + } + }}; +} + // require a == b #[macro_export] macro_rules! v2_require_eq { @@ -142,29 +168,24 @@ macro_rules! v2_require_gt { #[macro_export] macro_rules! v2_require_n_accounts { ( $accounts:expr, $n:literal) => {{ - match $accounts.len().cmp(&$n) { - core::cmp::Ordering::Less => { - pinocchio_log::log!( - "Need {} accounts, but got less ({}) accounts", - $n, - $accounts.len() - ); - return Err( - pinocchio::error::ProgramError::NotEnoughAccountKeys, - ); - } - core::cmp::Ordering::Equal => { - TryInto::<&[_; $n]>::try_into($accounts) - .map_err(|_| $crate::error::DlpError::InfallibleError)? - } - core::cmp::Ordering::Greater => { - pinocchio_log::log!( - "Need {} accounts, but got more ({}) accounts", - $n, - $accounts.len() - ); - return Err($crate::error::DlpError::TooManyAccountKeys.into()); - } + let n = $accounts.len(); + if n == $n { + TryInto::<&[_; $n]>::try_into($accounts) + .map_err(|_| $crate::error::DlpError::InfallibleError)? + } else if n < $n { + pinocchio_log::log!( + "Need {} accounts, but got less ({}) accounts", + $n, + $accounts.len() + ); + return Err(pinocchio::error::ProgramError::NotEnoughAccountKeys); + } else { + pinocchio_log::log!( + "Need {} accounts, but got more ({}) accounts", + $n, + $accounts.len() + ); + return Err($crate::error::DlpError::TooManyAccountKeys.into()); } }}; } @@ -188,9 +209,9 @@ macro_rules! v2_require_some { #[macro_export] macro_rules! v2_require_owned_by { ($info: expr, $owner: expr) => {{ - if !address_eq(unsafe { $info.owner() }, $owner) { + if !pinocchio::address::address_eq(unsafe { $info.owner() }, $owner) { pinocchio_log::log!( - "require_owned_pda!({}, {})", + "require_owned_by!({}, {})", stringify!($info), stringify!($owner) ); diff --git a/src/v2/state/delegation_state.rs b/src/v2/state/delegation_state.rs index 20588159..9ab6f4d9 100644 --- a/src/v2/state/delegation_state.rs +++ b/src/v2/state/delegation_state.rs @@ -1,7 +1,12 @@ use bytemuck::{Pod, Zeroable}; -use pinocchio::Address; +use pinocchio::{error::ProgramError, AccountView, Address}; -use crate::{args::Boolean, v2::HeaderWithBuffer}; +use crate::{ + args::Boolean, + pod_view::PodView, + v2::{HeaderWithBuffer, HeaderWithBufferMut}, + v2_require_eq, v2_require_ge, v2_require_owned_by, +}; #[repr(C)] #[derive(Clone, Copy, Pod, Zeroable)] @@ -9,34 +14,33 @@ pub struct DelegationStateHeader { /// discriminator that identifies this account type pub discriminator: [u8; 8], - /// the original owner of the account - pub original_owner: Address, - - /// the slot at which the delegation was created - pub delegation_slot: u64, + /// validated, immutable account bindings for this delegation. + pub bindings: ValidatedDelegationBindings, /// the lamports at the time of delegation or from the last state finalization /// stored as lamports can be received even if the account is delegated - pub lamports: u64, - - /// the state update frequency in milliseconds - pub commit_frequency_ms: u64, - - /// validated, immutable account bindings for this delegation. - pub bindings: ValidatedDelegationBindings, + pub original_lamports: u64, /// the last commit-id account had during delegation update /// Deprecated: The last slot at which the delegation was updated pub last_commit_id: u64, - /// The account that paid the rent for the delegation PDAs - pub rent_payer: Address, - /// Whether the account can be undelegated or not pub is_undelegatable: Boolean, pub reserved_padding0: [u8; 7], // The seeds of the account, used to reopen it on undelegation + /// the original owner of the account + pub original_owner: Address, + + /// the slot at which the delegation was created + pub delegation_slot: u64, + + /// the state update frequency in milliseconds + pub commit_frequency_ms: u64, + + /// The account that paid the rent for the delegation PDAs + pub rent_payer: Address, //pub seeds: Vec>, } @@ -61,24 +65,63 @@ pub struct DelegationStateHeader { /// Under these assumptions, the bindings stored here are authoritative and can be /// safely used for fast-path account validation. /// + #[repr(C)] #[derive(Clone, Copy, Pod, Zeroable)] pub struct ValidatedDelegationBindings { - pub delegation_account: Address, - //pub validator_fees_vault: Address, + pub delegated_account: Address, pub validator_as_authority: Address, + pub validator_fees_vault: Address, } pub type DelegationState<'a> = HeaderWithBuffer<'a, DelegationStateHeader>; +pub type DelegationStateMut<'a> = + HeaderWithBufferMut<'a, DelegationStateHeader>; impl DelegationStateHeader { pub const SEED: &'static [u8] = b"delegation_state"; /// - /// v1 means version 1 of this account type. this allows us to evolve without - /// account migration. + /// Account discriminator and state kind identifier. /// - pub const DISCRIMINATOR: [u8; 8] = *b"v1.state"; + /// The suffix `00` in `state.00` identifies a specific delegation state kind. + /// Different values (e.g, `state.01`, `state.02`, …) may coexist and represent + /// distinct delegation models with different layouts and semantics, optimized + /// for different performance or validation tradeoffs. + /// + /// Up to 256 state kinds are supported in the range `[0x00, 0xff]`. + /// + pub const DISCRIMINATOR: [u8; 8] = *b"state.00"; + + /// Highest supported delegation state kind. + pub const MAX_STATE_KIND: u8 = 0x00; pub const DISCRIMINATOR_FAST: u64 = u64::from_le_bytes(Self::DISCRIMINATOR); + + #[inline(always)] + pub fn validate( + delegation_state: &AccountView, + ) -> Result<(), ProgramError> { + v2_require_owned_by!(delegation_state, &crate::fast::ID); + + #[cfg(feature = "unsafe")] + let data = unsafe { delegation_state.borrow_unchecked() }; + + #[cfg(not(feature = "unsafe"))] + let data = delegation_state.try_borrow()?; + + v2_require_ge!( + data.len(), + DelegationStateHeader::SPACE, + ProgramError::InvalidAccountData + ); + + v2_require_eq!( + unsafe { (data.as_ptr() as *const u64).read() }, + Self::DISCRIMINATOR_FAST, + ProgramError::InvalidAccountData + ); + + Ok(()) + } } diff --git a/src/v2/state/types.rs b/src/v2/state/types.rs index edf5cad3..459ce71a 100644 --- a/src/v2/state/types.rs +++ b/src/v2/state/types.rs @@ -1,4 +1,4 @@ -use std::ops::Deref; +use std::ops::{Deref, DerefMut}; use pinocchio::error::ProgramError; @@ -10,6 +10,7 @@ pub struct HeaderWithBuffer<'a, Header> { } impl<'a, Header: PodView> HeaderWithBuffer<'a, Header> { + #[inline(always)] pub fn from_bytes(input: &'a [u8]) -> Result { v2_require_ge!( input.len(), @@ -17,10 +18,19 @@ impl<'a, Header: PodView> HeaderWithBuffer<'a, Header> { ProgramError::InvalidInstructionData ); - let (header_bytes, buffer) = input.split_at(Header::SPACE); + let (header_bytes, buffer) = + unsafe { input.split_at_unchecked(Header::SPACE) }; Ok(Self { - header: Header::try_view_from(header_bytes)?, + header: { + #[cfg(feature = "unsafe")] + unsafe { + &*(header_bytes.as_ptr() as *const Header) + } + + #[cfg(not(feature = "unsafe"))] + Header::try_view_from(header_bytes)? + }, buffer, }) } @@ -36,3 +46,52 @@ impl
Deref for HeaderWithBuffer<'_, Header> { self.header } } + +pub struct HeaderWithBufferMut<'a, Header> { + header: &'a mut Header, + pub buffer: &'a mut [u8], +} + +impl<'a, Header: PodView> HeaderWithBufferMut<'a, Header> { + #[inline(always)] + pub fn from_bytes(input: &'a mut [u8]) -> Result { + v2_require_ge!( + input.len(), + Header::SPACE, + ProgramError::InvalidInstructionData + ); + + let (header_bytes, buffer) = + unsafe { input.split_at_mut_unchecked(Header::SPACE) }; + + Ok(Self { + header: { + #[cfg(feature = "unsafe")] + unsafe { + &mut *(header_bytes.as_mut_ptr() as *mut Header) + } + + #[cfg(not(feature = "unsafe"))] + Header::try_view_from_mut(header_bytes)? + }, + buffer, + }) + } + + pub fn space(&self) -> usize { + Header::SPACE + self.buffer.len() + } +} + +impl
Deref for HeaderWithBufferMut<'_, Header> { + type Target = Header; + fn deref(&self) -> &Self::Target { + self.header + } +} + +impl
DerefMut for HeaderWithBufferMut<'_, Header> { + fn deref_mut(&mut self) -> &mut Self::Target { + self.header + } +} diff --git a/tests/fixtures/accounts.rs b/tests/fixtures/accounts.rs index 3c85bdbd..f29e26c8 100644 --- a/tests/fixtures/accounts.rs +++ b/tests/fixtures/accounts.rs @@ -7,11 +7,11 @@ use solana_program::{ use solana_sdk::pubkey; // Constants for default values -const DEFAULT_DELEGATION_SLOT: u64 = 0; -const DEFAULT_COMMIT_FREQUENCY_MS: u64 = 0; -const DEFAULT_LAST_UPDATE_EXTERNAL_SLOT: u64 = 0; -const DEFAULT_IS_UNDELEGATABLE: bool = false; -const DEFAULT_SEEDS: &[&[u8]] = &[&[116, 101, 115, 116, 45, 112, 100, 97]]; +pub const DEFAULT_DELEGATION_SLOT: u64 = 0; +pub const DEFAULT_COMMIT_FREQUENCY_MS: u64 = 0; +pub const DEFAULT_LAST_UPDATE_EXTERNAL_SLOT: u64 = 0; +pub const DEFAULT_IS_UNDELEGATABLE: bool = false; +pub const DEFAULT_SEEDS: &[&[u8]] = &[&[116, 101, 115, 116, 45, 112, 100, 97]]; #[allow(dead_code)] pub const COMMIT_STATE_AUTHORITY: Pubkey = diff --git a/tests/test_v2_commit_finalize.rs b/tests/test_v2_commit_finalize.rs new file mode 100644 index 00000000..7a8d97a2 --- /dev/null +++ b/tests/test_v2_commit_finalize.rs @@ -0,0 +1,249 @@ +use dlp::{ + pda::validator_fees_vault_pda_from_validator, + pod_view::PodView, + v2::{ + CommitFinalizeArgs, DelegationStateHeader, ValidatedDelegationBindings, + }, +}; +use solana_program::{ + hash::Hash, native_token::LAMPORTS_PER_SOL, rent::Rent, system_program, +}; +use solana_program_test::{ + BanksClient, BanksTransactionResultWithMetadata, ProgramTest, +}; +use solana_sdk::{ + account::Account, + compute_budget::ComputeBudgetInstruction, + pubkey::Pubkey, + signature::{Keypair, Signer}, + transaction::Transaction, +}; + +use crate::fixtures::{ + DEFAULT_COMMIT_FREQUENCY_MS, DEFAULT_DELEGATION_SLOT, DELEGATED_PDA_ID, + DELEGATED_PDA_OWNER_ID, TEST_AUTHORITY, +}; + +mod fixtures; + +#[tokio::test] +async fn test_v2_commit_finalize_perf() { + // Setup + const KB: usize = 1024; + const ACCOUNT_SIZE: usize = 4 * KB; + + let (banks, _, authority, blockhash) = + setup_program_test_env(vec![0; ACCOUNT_SIZE]).await; + let new_state: Vec = vec![1; ACCOUNT_SIZE]; + + let new_account_balance = 1_000_000; + + let ix = dlp::instruction_builder::v2_commit_finalize( + authority.pubkey(), + DELEGATED_PDA_ID, + &mut CommitFinalizeArgs { + commit_id: 1, + allow_undelegation: true.into(), + data_is_diff: false.into(), + lamports: new_account_balance, + reserved_padding: Default::default(), + }, + &new_state, + ); + let tx = Transaction::new_signed_with_payer( + &[ + ComputeBudgetInstruction::set_compute_unit_limit( + dlp::instruction_builder::MAX_CU_COMMIT_FINALIZE + 150, /* 150 for ComputeBudgetInstruction itself */ + ), + ix, + ], + Some(&authority.pubkey()), + &[&authority], + blockhash, + ); + + // execute CommitFinalize and validate CU performmace + { + let BanksTransactionResultWithMetadata { + result: _, + metadata, + } = banks.process_transaction_with_metadata(tx).await.unwrap(); + + let metadata = metadata.unwrap(); + + assertables::assert_lt!(metadata.compute_units_consumed, 1150); + + assert_eq!( + metadata + .log_messages + .iter() + .filter(|log| !log + .contains("ComputeBudget111111111111111111111111111111")) + .count(), + 3, + "CommitFinalize must not log anything in OK scenario" + ); + } + + let delegated_account = + banks.get_account(DELEGATED_PDA_ID).await.unwrap().unwrap(); + assert_eq!(delegated_account.data, new_state); + + // let delegation_metadata_account = banks + // .get_account(pdas.delegation_metadata) + // .await + // .unwrap() + // .unwrap(); + + // let delegation_metadata = + // DelegationMetadata::try_from_bytes_with_discriminator( + // &delegation_metadata_account.data, + // ) + // .unwrap(); + + // assert_eq!(delegation_metadata.is_undelegatable, true); +} + +#[tokio::test] +async fn test_commit_finalize_out_of_order() { + // Setup + let (banks, _, authority, blockhash) = setup_program_test_env(vec![]).await; + let new_state = vec![0, 1, 2, 9, 9, 9, 6, 7, 8, 9]; + + let new_account_balance = 1_000_000; + + let ix = dlp::instruction_builder::v2_commit_finalize( + authority.pubkey(), + DELEGATED_PDA_ID, + &mut CommitFinalizeArgs { + commit_id: 2, // this is the min value which will cause NonceOutOfOrder + allow_undelegation: true.into(), + data_is_diff: false.into(), + lamports: new_account_balance, + reserved_padding: Default::default(), + }, + &new_state, + ); + + let tx = Transaction::new_signed_with_payer( + &[ix], + Some(&authority.pubkey()), + &[&authority], + blockhash, + ); + + let BanksTransactionResultWithMetadata { result, metadata } = + banks.process_transaction_with_metadata(tx).await.unwrap(); + + let metadata = metadata.unwrap(); + + let log = metadata + .log_messages + .iter() + .find(|log| log.contains("require")) + .unwrap(); + + assert_eq!( + log, + "Program log: require_eq!(args.commit_id, prev_id + 1) failed: 2 == 1" + ); + + assert!( + metadata + .log_messages + .iter() + .any(|log| log.contains("NonceOutOfOrder")), + "{:#?}", + metadata + ); + + assert_eq!( + result.unwrap_err().to_string(), + "Error processing Instruction 0: custom program error: 0xc" + ); +} + +async fn setup_program_test_env( + pda_data: Vec, +) -> (BanksClient, Keypair, Keypair, Hash) { + let mut program_test = ProgramTest::new("dlp", dlp::ID, None); + program_test.prefer_bpf(true); + + let validator_keypair = Keypair::from_bytes(&TEST_AUTHORITY).unwrap(); + + program_test.add_account( + validator_keypair.pubkey(), + Account { + lamports: 10 * LAMPORTS_PER_SOL, + data: vec![], + owner: system_program::id(), + executable: false, + rent_epoch: 0, + }, + ); + + // Setup a delegated PDA + program_test.add_account( + DELEGATED_PDA_ID, + Account { + lamports: LAMPORTS_PER_SOL, + data: pda_data, + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let validator_fees_vault = + validator_fees_vault_pda_from_validator(&validator_keypair.pubkey()); + let header = DelegationStateHeader { + discriminator: DelegationStateHeader::DISCRIMINATOR, + original_owner: DELEGATED_PDA_OWNER_ID.to_bytes().into(), + delegation_slot: DEFAULT_DELEGATION_SLOT, + original_lamports: Rent::default().minimum_balance(500), + commit_frequency_ms: DEFAULT_COMMIT_FREQUENCY_MS, + bindings: ValidatedDelegationBindings { + delegated_account: DELEGATED_PDA_ID.to_bytes().into(), + validator_as_authority: validator_keypair + .pubkey() + .to_bytes() + .into(), + validator_fees_vault: validator_fees_vault.to_bytes().into(), + }, + last_commit_id: 0, + rent_payer: validator_keypair.pubkey().to_bytes().into(), + is_undelegatable: false.into(), + reserved_padding0: Default::default(), + }; + + program_test.add_account( + Pubkey::find_program_address( + &[DelegationStateHeader::SEED, DELEGATED_PDA_ID.as_ref()], + &dlp::id(), + ) + .0, + Account { + lamports: Rent::default() + .minimum_balance(DelegationStateHeader::SPACE), + data: header.to_bytes(), + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + // Setup the validator fees vault + program_test.add_account( + validator_fees_vault, + Account { + lamports: LAMPORTS_PER_SOL, + data: vec![], + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let (banks, payer, blockhash) = program_test.start().await; + (banks, payer, validator_keypair, blockhash) +} diff --git a/tests/test_v2_commit_finalize_from_buffer.rs b/tests/test_v2_commit_finalize_from_buffer.rs new file mode 100644 index 00000000..0d189b28 --- /dev/null +++ b/tests/test_v2_commit_finalize_from_buffer.rs @@ -0,0 +1,210 @@ +use dlp::{ + pda::validator_fees_vault_pda_from_validator, + pod_view::PodView, + v2::{ + CommitFinalizeArgs, DelegationStateHeader, ValidatedDelegationBindings, + }, +}; +use solana_program::{ + hash::Hash, native_token::LAMPORTS_PER_SOL, rent::Rent, system_program, +}; +use solana_program_test::{ + BanksClient, BanksTransactionResultWithMetadata, ProgramTest, +}; +use solana_sdk::{ + account::Account, + compute_budget::ComputeBudgetInstruction, + pubkey::Pubkey, + signature::{Keypair, Signer}, + transaction::Transaction, +}; + +use crate::fixtures::{ + DEFAULT_COMMIT_FREQUENCY_MS, DEFAULT_DELEGATION_SLOT, DELEGATED_PDA_ID, + DELEGATED_PDA_OWNER_ID, TEST_AUTHORITY, +}; + +mod fixtures; + +#[tokio::test] +async fn test_v2_commit_finalize_from_buffer_perf() { + // Setup + const KB: usize = 1024; + const ACCOUNT_SIZE: usize = 4 * KB; + + let new_state: Vec = vec![1; ACCOUNT_SIZE]; + let (banks, _, authority, blockhash) = + setup_program_test_env(vec![0; ACCOUNT_SIZE], new_state.clone()).await; + + let new_account_balance = 1_000_000; + let state_buffer_pda = + Pubkey::find_program_address(&[b"state_buffer"], &authority.pubkey()).0; + + let ix = dlp::instruction_builder::v2_commit_finalize_from_buffer( + authority.pubkey(), + DELEGATED_PDA_ID, + state_buffer_pda, + &mut CommitFinalizeArgs { + commit_id: 1, + allow_undelegation: true.into(), + data_is_diff: false.into(), + lamports: new_account_balance, + reserved_padding: Default::default(), + }, + ); + + let tx = Transaction::new_signed_with_payer( + &[ + ComputeBudgetInstruction::set_compute_unit_limit( + dlp::instruction_builder::MAX_CU_COMMIT_FINALIZE_FROM_BUFFER + + 150, /* 150 for ComputeBudgetInstruction itself */ + ), + ix, + ], + Some(&authority.pubkey()), + &[&authority], + blockhash, + ); + + // execute CommitFinalize and validate CU performmace + { + let BanksTransactionResultWithMetadata { + result: _, + metadata, + } = banks.process_transaction_with_metadata(tx).await.unwrap(); + + let metadata = metadata.unwrap(); + + assertables::assert_lt!(metadata.compute_units_consumed, 1150); + + assert_eq!( + metadata + .log_messages + .iter() + .filter(|log| !log + .contains("ComputeBudget111111111111111111111111111111")) + .count(), + 3, + "CommitFinalize must not log anything in OK scenario" + ); + } + + let delegated_account = + banks.get_account(DELEGATED_PDA_ID).await.unwrap().unwrap(); + assert_eq!(delegated_account.data, new_state); + + // let delegation_metadata_account = banks + // .get_account(pdas.delegation_metadata) + // .await + // .unwrap() + // .unwrap(); + + // let delegation_metadata = + // DelegationMetadata::try_from_bytes_with_discriminator( + // &delegation_metadata_account.data, + // ) + // .unwrap(); + + // assert_eq!(delegation_metadata.is_undelegatable, true); +} + +async fn setup_program_test_env( + pda_data: Vec, + pda_new_state: Vec, +) -> (BanksClient, Keypair, Keypair, Hash) { + let mut program_test = ProgramTest::new("dlp", dlp::ID, None); + program_test.prefer_bpf(true); + + let validator_keypair = Keypair::from_bytes(&TEST_AUTHORITY).unwrap(); + + program_test.add_account( + validator_keypair.pubkey(), + Account { + lamports: 10 * LAMPORTS_PER_SOL, + data: vec![], + owner: system_program::id(), + executable: false, + rent_epoch: 0, + }, + ); + + // Setup a delegated PDA + program_test.add_account( + DELEGATED_PDA_ID, + Account { + lamports: LAMPORTS_PER_SOL, + data: pda_data, + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let validator_fees_vault = + validator_fees_vault_pda_from_validator(&validator_keypair.pubkey()); + let header = DelegationStateHeader { + discriminator: DelegationStateHeader::DISCRIMINATOR, + original_owner: DELEGATED_PDA_OWNER_ID.to_bytes().into(), + delegation_slot: DEFAULT_DELEGATION_SLOT, + original_lamports: Rent::default().minimum_balance(500), + commit_frequency_ms: DEFAULT_COMMIT_FREQUENCY_MS, + bindings: ValidatedDelegationBindings { + delegated_account: DELEGATED_PDA_ID.to_bytes().into(), + validator_as_authority: validator_keypair + .pubkey() + .to_bytes() + .into(), + validator_fees_vault: validator_fees_vault.to_bytes().into(), + }, + last_commit_id: 0, + rent_payer: validator_keypair.pubkey().to_bytes().into(), + is_undelegatable: false.into(), + reserved_padding0: Default::default(), + }; + + program_test.add_account( + Pubkey::find_program_address( + &[DelegationStateHeader::SEED, DELEGATED_PDA_ID.as_ref()], + &dlp::id(), + ) + .0, + Account { + lamports: Rent::default() + .minimum_balance(DelegationStateHeader::SPACE), + data: header.to_bytes(), + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + // Setup the validator fees vault + program_test.add_account( + validator_fees_vault, + Account { + lamports: LAMPORTS_PER_SOL, + data: vec![], + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + program_test.add_account( + Pubkey::find_program_address( + &[b"state_buffer"], + &validator_keypair.pubkey(), + ) + .0, + Account { + lamports: LAMPORTS_PER_SOL, + data: pda_new_state, + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let (banks, payer, blockhash) = program_test.start().await; + (banks, payer, validator_keypair, blockhash) +} diff --git a/tests/test_v2_hyper_commit_finalize.rs b/tests/test_v2_hyper_commit_finalize.rs new file mode 100644 index 00000000..49e2b488 --- /dev/null +++ b/tests/test_v2_hyper_commit_finalize.rs @@ -0,0 +1,189 @@ +use std::ptr::read_unaligned; + +use dlp::{ + pda::validator_fees_vault_pda_from_validator, + pod_view::PodView, + v2::{ + CommitFinalizeArgs, DelegationStateHeader, ValidatedDelegationBindings, + }, +}; +use solana_program::{ + hash::Hash, native_token::LAMPORTS_PER_SOL, rent::Rent, system_program, +}; +use solana_program_test::{ + BanksClient, BanksTransactionResultWithMetadata, ProgramTest, +}; +use solana_sdk::{ + account::Account, + compute_budget::ComputeBudgetInstruction, + signature::{Keypair, Signer}, + transaction::Transaction, +}; + +use crate::fixtures::{ + DEFAULT_COMMIT_FREQUENCY_MS, DEFAULT_DELEGATION_SLOT, DELEGATED_PDA_ID, + DELEGATED_PDA_OWNER_ID, TEST_AUTHORITY, +}; + +mod fixtures; + +#[tokio::test] +async fn test_v2_hyper_commit_finalize_perf() { + // Setup + const KB: usize = 1024; + const ACCOUNT_SIZE: usize = 4 * KB; + + let (banks, _, authority, blockhash) = + setup_program_test_env(vec![0; ACCOUNT_SIZE]).await; + let new_state: Vec = vec![1; ACCOUNT_SIZE]; + + let new_account_balance = 1_000_000; + + let ix = dlp::instruction_builder::v2_hyper_commit_finalize( + authority.pubkey(), + DELEGATED_PDA_ID, + &mut CommitFinalizeArgs { + commit_id: 1, + allow_undelegation: true.into(), + data_is_diff: false.into(), + lamports: new_account_balance, + reserved_padding: Default::default(), + }, + &new_state, + ); + let tx = Transaction::new_signed_with_payer( + &[ + ComputeBudgetInstruction::set_compute_unit_limit( + dlp::instruction_builder::MAX_CU_COMMIT_FINALIZE + 150, /* 150 for ComputeBudgetInstruction itself */ + ), + ix, + ], + Some(&authority.pubkey()), + &[&authority], + blockhash, + ); + + // execute CommitFinalize and validate CU performmace + { + let BanksTransactionResultWithMetadata { + result: _, + metadata, + } = banks.process_transaction_with_metadata(tx).await.unwrap(); + + let metadata = metadata.unwrap(); + + assertables::assert_lt!(metadata.compute_units_consumed, 1150); + + assert_eq!( + metadata + .log_messages + .iter() + .filter(|log| !log + .contains("ComputeBudget111111111111111111111111111111")) + .count(), + 3, + "CommitFinalize must not log anything in OK scenario" + ); + } + + let delegated_account = + banks.get_account(DELEGATED_PDA_ID).await.unwrap().unwrap(); + let state_size = unsafe { + read_unaligned(delegated_account.data.as_ptr() as *const u32) + } as usize; + assert_eq!(delegated_account.data[4 + state_size..], new_state); + + // let delegation_metadata_account = banks + // .get_account(pdas.delegation_metadata) + // .await + // .unwrap() + // .unwrap(); + + // let delegation_metadata = + // DelegationMetadata::try_from_bytes_with_discriminator( + // &delegation_metadata_account.data, + // ) + // .unwrap(); + + // assert_eq!(delegation_metadata.is_undelegatable, true); +} + +async fn setup_program_test_env( + pda_data: Vec, +) -> (BanksClient, Keypair, Keypair, Hash) { + let mut program_test = ProgramTest::new("dlp", dlp::ID, None); + program_test.prefer_bpf(true); + + let validator_keypair = Keypair::from_bytes(&TEST_AUTHORITY).unwrap(); + + program_test.add_account( + validator_keypair.pubkey(), + Account { + lamports: 10 * LAMPORTS_PER_SOL, + data: vec![], + owner: system_program::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let validator_fees_vault = + validator_fees_vault_pda_from_validator(&validator_keypair.pubkey()); + let state_header = DelegationStateHeader { + discriminator: DelegationStateHeader::DISCRIMINATOR, + original_owner: DELEGATED_PDA_OWNER_ID.to_bytes().into(), + delegation_slot: DEFAULT_DELEGATION_SLOT, + original_lamports: Rent::default().minimum_balance(500), + commit_frequency_ms: DEFAULT_COMMIT_FREQUENCY_MS, + bindings: ValidatedDelegationBindings { + delegated_account: DELEGATED_PDA_ID.to_bytes().into(), + validator_as_authority: validator_keypair + .pubkey() + .to_bytes() + .into(), + validator_fees_vault: validator_fees_vault.to_bytes().into(), + }, + last_commit_id: 0, + rent_payer: validator_keypair.pubkey().to_bytes().into(), + is_undelegatable: false.into(), + reserved_padding0: Default::default(), + }; + + // Setup a delegated PDA containing the delegation_state at the end + program_test.add_account( + DELEGATED_PDA_ID, + Account { + lamports: LAMPORTS_PER_SOL, + data: { + let state_buffer = vec![]; + let state = [state_header.to_bytes(), state_buffer].concat(); + let state_size = (state.len() as u32).to_le_bytes().to_vec(); + + [ + state_size, // size of the delegation state + state, // delegation state (appended by Delegate ix) + pda_data, // delegated pda + ] + .concat() + }, + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + // Setup the validator fees vault + program_test.add_account( + validator_fees_vault, + Account { + lamports: LAMPORTS_PER_SOL, + data: vec![], + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let (banks, payer, blockhash) = program_test.start().await; + (banks, payer, validator_keypair, blockhash) +} From 95d95fb174772ead7786d60dfc04c7f69f36e832 Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Mon, 9 Feb 2026 20:37:34 +0800 Subject: [PATCH 2/7] add deserialize copying from pinocchio --- Cargo.lock | 1 + Cargo.toml | 1 + src/entrypoint.rs | 262 +++++++++++++++++- src/instruction_builder/v2_commit_finalize.rs | 4 +- src/lib.rs | 67 ++++- src/v2/instruction.rs | 61 ++-- src/v2/processor/commit_finalize_inline.rs | 168 +++++++++++ src/v2/processor/hyper_commit_finalize.rs | 104 ------- src/v2/processor/mod.rs | 4 +- src/v2/state/types.rs | 28 ++ ...e.rs => test_v2_commit_finalize_inline.rs} | 4 +- 11 files changed, 550 insertions(+), 154 deletions(-) create mode 100644 src/v2/processor/commit_finalize_inline.rs delete mode 100644 src/v2/processor/hyper_commit_finalize.rs rename tests/{test_v2_hyper_commit_finalize.rs => test_v2_commit_finalize_inline.rs} (98%) diff --git a/Cargo.lock b/Cargo.lock index ae13c814..9c7670e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2345,6 +2345,7 @@ dependencies = [ "serde", "solana-address", "solana-curve25519", + "solana-define-syscall 4.0.1", "solana-program", "solana-program-test", "solana-sdk", diff --git a/Cargo.toml b/Cargo.toml index 6c790522..e0328663 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,6 +59,7 @@ pinocchio-associated-token-account = { version = "0.3.0" , optional = true } # version must match the one imported by pinocchio solana-address = { version = "2.0", features = ["bytemuck", "decode", "syscalls", "curve25519", "std"] } +solana-define-syscall = "4.0" # manually resolves the conflict with a pinned version of serde serde = "=1.0.226" diff --git a/src/entrypoint.rs b/src/entrypoint.rs index ddc74aa5..dd4b0da8 100644 --- a/src/entrypoint.rs +++ b/src/entrypoint.rs @@ -1,9 +1,25 @@ +use std::mem::MaybeUninit; + use solana_program::entrypoint; use crate::{ error::DlpError, fast_process_instruction, slow_process_instruction, }; +use pinocchio::{ + account::{AccountView, RuntimeAccount, MAX_PERMITTED_DATA_INCREASE}, + entrypoint::NON_DUP_MARKER, + MAX_TX_ACCOUNTS, +}; + +const BPF_ALIGN_OF_U128: usize = 8; + +/// The "static" size of an account in the input buffer. +/// +/// This is the size of the account header plus the maximum permitted data increase. +const STATIC_ACCOUNT_DATA: usize = + size_of::() + MAX_PERMITTED_DATA_INCREASE; + entrypoint::custom_heap_default!(); entrypoint::custom_panic_default!(); @@ -15,16 +31,26 @@ entrypoint::custom_panic_default!(); pub unsafe extern "C" fn entrypoint(input: *mut u8) -> u64 { const UNINIT: core::mem::MaybeUninit = core::mem::MaybeUninit::::uninit(); - let mut accounts = [UNINIT; { pinocchio::MAX_TX_ACCOUNTS }]; + //const MAX_ACCOUNTS: usize = MAX_TX_ACCOUNTS; + const MAX_ACCOUNTS: usize = MAX_TX_ACCOUNTS; + let mut accounts = [UNINIT; { MAX_ACCOUNTS }]; - let (_program_id, count, data) = pinocchio::entrypoint::deserialize::< - { pinocchio::MAX_TX_ACCOUNTS }, - >(input, &mut accounts); + let (count, ixdata, ixdatalen) = + self::deserialize::<{ MAX_ACCOUNTS }>(input, &mut accounts); + //let (_program_id, count, data) = pinocchio::entrypoint::deserialize::< + // { pinocchio::MAX_TX_ACCOUNTS }, + //>(input, &mut accounts); + + if ixdatalen < 8 { + return pinocchio::error::INVALID_INSTRUCTION_DATA; + } // 23 CU so far match fast_process_instruction( - core::slice::from_raw_parts(accounts.as_ptr() as _, count), - data, + //core::slice::from_raw_parts(accounts.as_ptr() as _, count), + &*core::ptr::slice_from_raw_parts(accounts.as_ptr() as _, count), + ixdata, + ixdatalen, ) { Some(Ok(())) => pinocchio::SUCCESS, Some(Err(error)) => { @@ -56,3 +82,227 @@ pub unsafe fn slow_entrypoint(input: *mut u8) -> u64 { } } } + +#[allow(clippy::clone_on_copy)] +#[cold] +#[inline(always)] +unsafe fn clone_account_view( + accounts: *mut AccountView, + accounts_slice: *const AccountView, + index: u8, +) { + accounts.write((*accounts_slice.add(index as usize)).clone()); +} + +/// Align a pointer to the BPF alignment of [`u128`]. +macro_rules! align_pointer { + ($ptr:ident) => { + // Integer-to-pointer cast: first compute the aligned address as a `usize`, + // since this is more CU-efficient than using `ptr::align_offset()` or the + // strict provenance API (e.g., `ptr::with_addr()`). Then cast the result + // back to a pointer. The resulting pointer is guaranteed to be valid + // becauseit follows the layout serialized by the runtime. + core::ptr::with_exposed_provenance_mut( + ($ptr.expose_provenance() + (BPF_ALIGN_OF_U128 - 1)) & !(BPF_ALIGN_OF_U128 - 1), + ) + }; +} + +/// A macro to repeat a pattern to process an account `n` times, where `n` is the number of `_` +/// tokens in the input. +/// +/// The main advantage of this macro is to inline the code to process `n` accounts, which is useful +/// to reduce the number of jumps required. As a result, it reduces the number of CUs required to +/// process each account. +/// +/// Note that this macro emits code to update both the `input` and `accounts` pointers. +macro_rules! process_n_accounts { + // Base case: no tokens left. + ( () => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => {}; + + // Recursive case: one `_` token per repetition. + ( ( _ $($rest:tt)* ) => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + process_n_accounts!(@process_account => ($input, $accounts, $accounts_slice)); + process_n_accounts!(($($rest)*) => ($input, $accounts, $accounts_slice)); + }; + + // Process one account. + ( @process_account => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + // Increment the `accounts` pointer to the next account. + $accounts = $accounts.add(1); + + // Read the next account. + let account: *mut RuntimeAccount = $input as *mut RuntimeAccount; + // Adds an 8-bytes offset for: + // - rent epoch in case of a non-duplicated account + // - duplicated marker + 7 bytes of padding in case of a duplicated account + $input = $input.add(size_of::()); + + if (*account).borrow_state != NON_DUP_MARKER { + clone_account_view($accounts, $accounts_slice, (*account).borrow_state); + } else { + $accounts.write(AccountView::new_unchecked(account)); + + $input = $input.add(STATIC_ACCOUNT_DATA); + $input = $input.add((*account).data_len as usize); + $input = align_pointer!($input); + } + }; +} + +/// Convenience macro to transform the number of accounts to process into a pattern of `_` tokens +/// for the [`process_n_accounts`] macro. +#[macro_export] +macro_rules! process_accounts { + ( 1 => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + process_n_accounts!( (_) => ( $input, $accounts, $accounts_slice )); + }; + ( 2 => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + process_n_accounts!( (_ _) => ( $input, $accounts, $accounts_slice )); + }; + ( 3 => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + process_n_accounts!( (_ _ _) => ( $input, $accounts, $accounts_slice )); + }; + ( 4 => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + process_n_accounts!( (_ _ _ _) => ( $input, $accounts, $accounts_slice )); + }; + ( 5 => ( $input:ident, $accounts:ident, $accounts_slice:ident ) ) => { + process_n_accounts!( (_ _ _ _ _) => ( $input, $accounts, $accounts_slice )); + }; +} + +#[inline(always)] +pub unsafe fn deserialize( + mut input: *mut u8, + accounts: &mut [MaybeUninit; MAX_ACCOUNTS], +) -> (usize, *const u8, usize) { + // Ensure that MAX_ACCOUNTS is less than or equal to the maximum number of accounts + // (MAX_TX_ACCOUNTS) that can be processed in a transaction. + const { + assert!( + MAX_ACCOUNTS <= MAX_TX_ACCOUNTS, + "MAX_ACCOUNTS must be less than or equal to MAX_TX_ACCOUNTS" + ); + } + + // Number of accounts to process. + let mut processed = *(input as *const u64) as usize; + // Skip the number of accounts (8 bytes). + input = input.add(size_of::()); + + if processed > 0 { + let mut accounts = accounts.as_mut_ptr() as *mut AccountView; + // Represents the beginning of the accounts slice. + let accounts_slice = accounts; + + // The first account is always non-duplicated, so process + // it directly as such. + let account: *mut RuntimeAccount = input as *mut RuntimeAccount; + accounts.write(AccountView::new_unchecked(account)); + + input = input.add(STATIC_ACCOUNT_DATA + size_of::()); + input = input.add((*account).data_len as usize); + input = align_pointer!(input); + + if processed > 1 { + // The number of accounts to process (`to_process_plus_one`) is limited to + // `MAX_ACCOUNTS`, which is the capacity of the accounts array. When there are more + // accounts to process than the maximum, we still need to skip the remaining accounts + // (`to_skip`) to move the input pointer to the instruction data. At the end, we return + // the number of accounts processed (`processed`), which represents the accounts + // initialized in the `accounts` slice. + // + // Note that `to_process_plus_one` includes the first (already processed) account to + // avoid decrementing the value. The actual number of remaining accounts to process is + // `to_process_plus_one - 1`. + let mut to_process_plus_one = if MAX_ACCOUNTS < MAX_TX_ACCOUNTS { + std::cmp::min(processed, MAX_ACCOUNTS) + } else { + processed + }; + + let mut to_skip = processed - to_process_plus_one; + processed = to_process_plus_one; + + // This is an optimization to reduce the number of jumps required to process the + // accounts. The macro `process_accounts` will generate inline code to process the + // specified number of accounts. + if to_process_plus_one == 2 { + process_accounts!(1 => (input, accounts, accounts_slice)); + } else { + while to_process_plus_one > 5 { + // Process 5 accounts at a time. + process_accounts!(5 => (input, accounts, accounts_slice)); + to_process_plus_one -= 5; + } + + // There might be remaining accounts to process. + match to_process_plus_one { + 5 => { + process_accounts!(4 => (input, accounts, accounts_slice)); + } + 4 => { + process_accounts!(3 => (input, accounts, accounts_slice)); + } + 3 => { + process_accounts!(2 => (input, accounts, accounts_slice)); + } + 2 => { + process_accounts!(1 => (input, accounts, accounts_slice)); + } + 1 => (), + _ => { + // SAFETY: `while` loop above makes sure that `to_process_plus_one` + // has 1 to 5 entries left. + unsafe { core::hint::unreachable_unchecked() } + } + } + } + + // Process any remaining accounts to move the offset to the instruction data (there is a + // duplication of logic but we avoid testing whether we have space for the account or + // not). + // + // There might be accounts to skip only when `MAX_ACCOUNTS < MAX_TX_ACCOUNTS` so this + // allows the compiler to optimize the code and avoid the loop when `MAX_ACCOUNTS == + // MAX_TX_ACCOUNTS`. + if MAX_ACCOUNTS < MAX_TX_ACCOUNTS { + while to_skip > 0 { + // Marks the account as skipped. + to_skip -= 1; + + // Read the next account. + let account: *mut RuntimeAccount = + input as *mut RuntimeAccount; + // Adds an 8-bytes offset for: + // - rent epoch in case of a non-duplicated account + // - duplicated marker + 7 bytes of padding in case of a duplicated account + input = input.add(size_of::()); + + if (*account).borrow_state == NON_DUP_MARKER { + input = input.add(STATIC_ACCOUNT_DATA); + input = input.add((*account).data_len as usize); + input = align_pointer!(input); + } + } + } + } + } + + // instruction data + let instruction_data_len = *(input as *const u64) as usize; + input = input.add(size_of::()); + + let instruction_data = input; + //let instruction_data = + // { core::slice::from_raw_parts(input, instruction_data_len) }; + //let instruction_data = + // { &*core::ptr::slice_from_raw_parts(input, instruction_data_len) }; + + //let input = input.add(instruction_data_len); + + //// program id + //let program_id: &Address = &*(input as *const Address); + + (processed, instruction_data, instruction_data_len) +} diff --git a/src/instruction_builder/v2_commit_finalize.rs b/src/instruction_builder/v2_commit_finalize.rs index 01d5c879..534db5f6 100644 --- a/src/instruction_builder/v2_commit_finalize.rs +++ b/src/instruction_builder/v2_commit_finalize.rs @@ -52,7 +52,7 @@ pub fn v2_commit_finalize( } } -pub fn v2_hyper_commit_finalize( +pub fn v2_commit_finalize_inline( validator: Pubkey, delegated_account: Pubkey, args: &mut CommitFinalizeArgs, @@ -67,7 +67,7 @@ pub fn v2_hyper_commit_finalize( // AccountMeta::new_readonly(system_program::id(), false), ], data: [ - DlpInstruction::HyperCommitFinalize.to_vec(), + DlpInstruction::CommitFinalizeInline.to_vec(), args.to_bytes(), state_or_diff.to_vec(), ] diff --git a/src/lib.rs b/src/lib.rs index 5462368f..301a79d2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -76,7 +76,7 @@ solana_security_txt::security_txt! { } #[rustfmt::skip] -pub const GLOBAL_IX_TABLE: [v2::IxHandler; 256] = { +pub const GLOBAL_IX_TABLE: [v2::Processor; 256] = { // start from v2 table as initial value and then write the // other empty slots with v1 instructions so that in the // end, we'll have a single table containing all v1 and v2 instructions @@ -105,17 +105,19 @@ pub const GLOBAL_IX_TABLE: [v2::IxHandler; 256] = { #[cfg(not(feature = "sdk"))] pub fn fast_process_instruction( accounts: &[pinocchio::AccountView], - ixdata: &[u8], + //ixdata: &[u8], + ixdata: *const u8, + ixdatalen: usize, ) -> Option { - use crate::v2::process_hyper_commit_finalize; + //if ixdata.len() < 8 { + // return Some(Err( + // pinocchio::error::ProgramError::InvalidInstructionData, + // )); + //} - if ixdata.len() < 8 { - return Some(Err( - pinocchio::error::ProgramError::InvalidInstructionData, - )); - } + //let (discriminator_bytes, data) = unsafe { ixdata.split_at_unchecked(8) }; - let (discriminator_bytes, data) = unsafe { ixdata.split_at_unchecked(8) }; + use pinocchio::hint::likely; #[cfg(feature = "logging")] msg!("Processing instruction: {:?}", discriminator); @@ -123,10 +125,42 @@ pub fn fast_process_instruction( // 23 CU -- till here if true { - //return Some(Ok(())); - return Some(process_hyper_commit_finalize(accounts, data)); - } else { - match GLOBAL_IX_TABLE[discriminator_bytes[0] as usize](accounts, data) { + if likely( + unsafe { *ixdata } + == v2::DlpInstruction::CommitFinalizeInline as u8, + ) { + //return Some(Ok(())); + return Some(v2::process_commit_finalize_inline( + accounts, + unsafe { ixdata.add(8) }, + ixdatalen - 8, + )); + } else { + match GLOBAL_IX_TABLE[unsafe { *ixdata } as usize]( + accounts, + unsafe { + core::slice::from_raw_parts(ixdata.add(8), ixdatalen - 8) + }, + ) { + e @ Err(pinocchio::error::ProgramError::Custom(val)) => { + use crate::error::DlpError; + + if val == DlpError::InstructionNotFound as u32 { + None + } else { + Some(e) + } + } + otherwise => Some(otherwise), + } + } + } else if false { + match unsafe { + GLOBAL_IX_TABLE.get_unchecked(*ixdata as usize)( + accounts, + core::slice::from_raw_parts(ixdata.add(8), ixdatalen - 8), + ) + } { e @ Err(pinocchio::error::ProgramError::Custom(val)) => { use crate::error::DlpError; @@ -138,6 +172,13 @@ pub fn fast_process_instruction( } otherwise => Some(otherwise), } + } else { + unsafe { + Some(GLOBAL_IX_TABLE.get_unchecked(*ixdata as usize)( + accounts, + core::slice::from_raw_parts(ixdata.add(8), ixdatalen - 8), + )) + } } } diff --git a/src/v2/instruction.rs b/src/v2/instruction.rs index dd627b57..3d4329db 100644 --- a/src/v2/instruction.rs +++ b/src/v2/instruction.rs @@ -15,46 +15,54 @@ pub enum DlpInstruction { DelegateWithAnyValidator = 102, /// - /// Commit group: [111, 120] => 10 slots + /// Commit group: [111, 130] => 20 slots /// Commit = 111, CommitFromBuffer = 112, - CommitFinalize = 113, - CommitFinalizeFromBuffer = 114, - HyperCommitFinalize = 115, + CommitInline = 113, + CommitInlineFromBuffer = 114, + CommitInlineResize = 115, + CommitInlineResizeFromBuffer = 116, + + CommitFinalize = 117, + CommitFinalizeFromBuffer = 118, + CommitFinalizeInline = 119, + CommitFinalizeInlineFromBuffer = 120, + CommitFinalizeInlineResize = 121, + CommitFinalizeInlineResizeFromBuffer = 122, /// - /// Finalize group: [121, 130] => 10 slots + /// Finalize group: [131, 140] => 10 slots /// - Finalize = 121, + Finalize = 131, /// - /// Undelegate group: [131, 140] => 10 slots + /// Undelegate group: [141, 150] => 10 slots /// - Undelegate = 131, + Undelegate = 141, UndelegateConfinedAccount = 132, /// - /// User group: [141, 150] => 10 slots + /// User group: [151, 160] => 10 slots /// - CallHandler = 141, + CallHandler = 151, /// - /// Vaults group: [151, 160] => 10 slots + /// Vaults group: [161, 170] => 10 slots /// - InitProtocolFeesVault = 151, - ProtocolClaimFees = 152, - InitValidatorFeesVault = 153, - ValidatorClaimFees = 154, - CloseValidatorFeesVault = 155, + InitProtocolFeesVault = 161, + ProtocolClaimFees = 162, + InitValidatorFeesVault = 163, + ValidatorClaimFees = 164, + CloseValidatorFeesVault = 165, /// - /// Misc group: [161, 180] => 20 slots + /// Misc group: [171, 190] => 20 slots /// - WhitelistValidatorForProgram = 161, - TopUpEphemeralBalance = 162, - DelegateEphemeralBalance = 163, - CloseEphemeralBalance = 164, + WhitelistValidatorForProgram = 171, + TopUpEphemeralBalance = 172, + DelegateEphemeralBalance = 173, + CloseEphemeralBalance = 174, } impl DlpInstruction { @@ -77,16 +85,17 @@ fn instruction_not_found( _: &[pinocchio::AccountView], _: &[u8], ) -> ProgramResult { + //unsafe { std::hint::unreachable_unchecked() } Err(DlpError::InstructionNotFound.into()) } -pub type IxHandler = fn(&[pinocchio::AccountView], &[u8]) -> ProgramResult; +pub type Processor = fn(&[pinocchio::AccountView], &[u8]) -> ProgramResult; #[rustfmt::skip] -pub const IX_TABLE: [IxHandler; 256] = { +pub const IX_TABLE: [Processor; 256] = { use super::processor::*; - let mut table = [instruction_not_found as IxHandler; 256]; + let mut table = [instruction_not_found as Processor; 256]; use DlpInstruction::*; @@ -97,7 +106,9 @@ pub const IX_TABLE: [IxHandler; 256] = { // Commit group table[CommitFinalize.index()] = process_commit_finalize; table[CommitFinalizeFromBuffer.index()] = process_commit_finalize_from_buffer; - table[HyperCommitFinalize.index()] = process_hyper_commit_finalize; + table[CommitFinalizeInline.index()] = |accounts, data| { + process_commit_finalize_inline(accounts, data.as_ptr(), data.len()) + }; table }; diff --git a/src/v2/processor/commit_finalize_inline.rs b/src/v2/processor/commit_finalize_inline.rs new file mode 100644 index 00000000..9f6eeb57 --- /dev/null +++ b/src/v2/processor/commit_finalize_inline.rs @@ -0,0 +1,168 @@ +use pinocchio::{error::ProgramError, AccountView, Address, ProgramResult}; + +use crate::{ + error::DlpError, + pod_view::PodView, + v2::{ + CommitFinalizeArgsWithBuffer, DelegationStateHeader, DelegationStateMut, + }, + v2_require, v2_require_eq, v2_require_eq_keys, v2_require_ge, + v2_require_signer, +}; + +/// Commit a new state, or a diff, directly to the delegated account. Unlike, CommitState and +/// CommitDiff variants, this instruction does not write to any temporary account first. In other +/// words, this instruction commits and finalizes both. +/// +/// Accounts: +/// +/// 0: `[signer]` the validator requesting the commit +/// 1: `[]` the delegated account +/// 2: `[]` the delegation record +/// 3: `[writable]` the delegation metadata +/// 4: `[]` the validator fees vault +/// 5: `[]` the program config account +/// 6: `[]` system program +/// +/// Instruction Data: CommitFinalizeArgsWithBuffer +/// + +const VALIDATOR: Address = + pinocchio::address::address!("tEsT3eV6RFCWs1BZ7AXTzasHqTtMnMLCB2tjQ42TDXD"); + +#[inline(always)] +pub fn process_commit_finalize_inline( + accounts: &[AccountView], + //data: &[u8], + ixdata: *const u8, + ixdatalen: usize, +) -> ProgramResult { + //if data.len() != 0 { + // return Ok(()); + //} + + //let [ + // validator, // force multi-line + // delegated_account, + //] = v2_require_n_accounts!(accounts, 2); + + let validator = unsafe { accounts.get_unchecked(0) }; + let delegated_account = unsafe { accounts.get_unchecked(1) }; + + //let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?; + let args = CommitFinalizeArgsWithBuffer::from_bytes_ptr(ixdata, ixdatalen)?; + + v2_require_signer!(validator); + + v2_require!( + args.data_is_diff.is_false(), + ProgramError::InvalidInstructionData + ); + + let delegated_account_lamports = delegated_account.lamports(); + + let data = unsafe { delegated_account.borrow_unchecked_mut() }; + + let (state_size, data) = unsafe { data.split_at_mut_unchecked(4) }; + + let state_size = unsafe { *(state_size.as_ptr() as *const u32) }; + + let (state_data, delegated_account_data) = + unsafe { data.split_at_mut_unchecked(state_size as usize) }; + + let (header, _) = unsafe { + state_data.split_at_mut_unchecked(DelegationStateHeader::SPACE) + }; + + let mut state_view = DelegationStateMut::from_bytes(header)?; + + if true { + if false { + v2_require_eq_keys!( + &state_view.bindings.validator_as_authority, + validator.address(), + DlpError::InvalidAuthority + ); + } else { + v2_require_eq_keys!( + &VALIDATOR, + validator.address(), + DlpError::InvalidAuthority + ); + } + + v2_require_ge!( + delegated_account_lamports, + state_view.original_lamports, + DlpError::InvalidDelegatedState + ); + + v2_require_eq!( + args.commit_id, + state_view.last_commit_id + 1, + DlpError::NonceOutOfOrder + ); + + v2_require!( + state_view.is_undelegatable.is_false(), + DlpError::NonceOutOfOrder + ); + } else { + v2_require!( + // address_eq( + // &state_view.bindings.validator_as_authority, + // validator.address() + // ) + // && + delegated_account_lamports >= state_view.original_lamports + && args.commit_id == state_view.last_commit_id + 1 + && state_view.is_undelegatable.is_false(), + DlpError::InvalidAuthority + ); + } + + state_view.last_commit_id = args.commit_id; + state_view.is_undelegatable = args.allow_undelegation.into(); + + if false { + delegated_account_data.copy_from_slice(args.buffer); + } else { + #[cfg(any(target_os = "solana", target_arch = "bpf"))] + unsafe { + //pinocchio::syscalls::sol_memcpy_( + solana_define_syscall::definitions::sol_memcpy_( + delegated_account_data.as_mut_ptr(), + args.buffer.as_ptr(), + args.buffer.len() as u64, + ); + } + + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] + unsafe { + if false { + let rem = args.buffer.len() % 8; + let len = args.buffer.len() / 8; + core::ptr::copy_nonoverlapping( + args.buffer.as_ptr() as *const u64, + delegated_account_data.as_mut_ptr() as *mut u64, + len, + ); + if rem != 0 { + core::ptr::copy_nonoverlapping( + args.buffer.as_ptr().add(len * 8), + delegated_account_data.as_mut_ptr().add(len * 8), + rem, + ); + } + } else { + core::ptr::copy_nonoverlapping( + args.buffer.as_ptr(), + delegated_account_data.as_mut_ptr(), + args.buffer.len(), + ); + } + } + } + + Ok(()) +} diff --git a/src/v2/processor/hyper_commit_finalize.rs b/src/v2/processor/hyper_commit_finalize.rs deleted file mode 100644 index 38b31976..00000000 --- a/src/v2/processor/hyper_commit_finalize.rs +++ /dev/null @@ -1,104 +0,0 @@ -use pinocchio::{error::ProgramError, AccountView, ProgramResult}; - -use crate::{ - error::DlpError, - pod_view::PodView, - v2::{ - CommitFinalizeArgsWithBuffer, DelegationStateHeader, DelegationStateMut, - }, - v2_require, v2_require_eq, v2_require_eq_keys, v2_require_ge, - v2_require_n_accounts, v2_require_signer, -}; - -/// Commit a new state, or a diff, directly to the delegated account. Unlike, CommitState and -/// CommitDiff variants, this instruction does not write to any temporary account first. In other -/// words, this instruction commits and finalizes both. -/// -/// Accounts: -/// -/// 0: `[signer]` the validator requesting the commit -/// 1: `[]` the delegated account -/// 2: `[]` the delegation record -/// 3: `[writable]` the delegation metadata -/// 4: `[]` the validator fees vault -/// 5: `[]` the program config account -/// 6: `[]` system program -/// -/// Instruction Data: CommitFinalizeArgsWithBuffer -/// - -#[inline(always)] -pub fn process_hyper_commit_finalize( - accounts: &[AccountView], - data: &[u8], -) -> ProgramResult { - //if data.len() != 0 { - // return Ok(()); - //} - - //let [ - // validator, // force multi-line - // delegated_account, - //] = v2_require_n_accounts!(accounts, 2); - - let validator = unsafe { accounts.get_unchecked(0) }; - let delegated_account = unsafe { accounts.get_unchecked(1) }; - - let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?; - - v2_require_signer!(validator); - - v2_require!( - args.data_is_diff.is_false(), - ProgramError::InvalidInstructionData - ); - - let delegated_account_lamports = delegated_account.lamports(); - - let data = unsafe { delegated_account.borrow_unchecked_mut() }; - - let (state_size, data) = unsafe { data.split_at_mut_unchecked(4) }; - - let state_size = unsafe { *(state_size.as_ptr() as *const u32) }; - - let (state_data, delegated_account_data) = - unsafe { data.split_at_mut_unchecked(state_size as usize) }; - - let (header, _) = unsafe { - state_data.split_at_mut_unchecked(DelegationStateHeader::SPACE) - }; - - let mut state_view = DelegationStateMut::from_bytes(header)?; - - if true { - v2_require_eq_keys!( - &state_view.bindings.validator_as_authority, - validator.address(), - DlpError::InvalidAuthority - ); - - v2_require_ge!( - delegated_account_lamports, - state_view.original_lamports, - DlpError::InvalidDelegatedState - ); - - v2_require_eq!( - args.commit_id, - state_view.last_commit_id + 1, - DlpError::NonceOutOfOrder - ); - - v2_require!( - state_view.is_undelegatable.is_false(), - DlpError::NonceOutOfOrder - ); - - state_view.last_commit_id = args.commit_id; - state_view.is_undelegatable = args.allow_undelegation.into(); - } - - delegated_account_data.copy_from_slice(args.buffer); - - Ok(()) -} diff --git a/src/v2/processor/mod.rs b/src/v2/processor/mod.rs index 9b7eda3e..56f58121 100644 --- a/src/v2/processor/mod.rs +++ b/src/v2/processor/mod.rs @@ -1,10 +1,10 @@ mod commit_finalize; mod commit_finalize_from_buffer; +mod commit_finalize_inline; mod delegate; -mod hyper_commit_finalize; mod internal; pub use commit_finalize::*; pub use commit_finalize_from_buffer::*; +pub use commit_finalize_inline::*; pub use delegate::*; -pub use hyper_commit_finalize::*; diff --git a/src/v2/state/types.rs b/src/v2/state/types.rs index 459ce71a..538a2c31 100644 --- a/src/v2/state/types.rs +++ b/src/v2/state/types.rs @@ -35,6 +35,34 @@ impl<'a, Header: PodView> HeaderWithBuffer<'a, Header> { }) } + #[inline(always)] + pub fn from_bytes_ptr( + data: *const u8, + len: usize, + ) -> Result { + v2_require_ge!( + len, + Header::SPACE, + ProgramError::InvalidInstructionData + ); + + Ok(Self { + header: { + //#[cfg(feature = "unsafe")] + unsafe { &*(data as *const Header) } + + //#[cfg(not(feature = "unsafe"))] + //Header::try_view_from(header_bytes)? + }, + buffer: unsafe { + core::slice::from_raw_parts( + data.add(Header::SPACE), + len - Header::SPACE, + ) + }, + }) + } + pub fn space(&self) -> usize { Header::SPACE + self.buffer.len() } diff --git a/tests/test_v2_hyper_commit_finalize.rs b/tests/test_v2_commit_finalize_inline.rs similarity index 98% rename from tests/test_v2_hyper_commit_finalize.rs rename to tests/test_v2_commit_finalize_inline.rs index 49e2b488..bb5e90d7 100644 --- a/tests/test_v2_hyper_commit_finalize.rs +++ b/tests/test_v2_commit_finalize_inline.rs @@ -28,7 +28,7 @@ use crate::fixtures::{ mod fixtures; #[tokio::test] -async fn test_v2_hyper_commit_finalize_perf() { +async fn test_v2_commit_finalize_inline_perf() { // Setup const KB: usize = 1024; const ACCOUNT_SIZE: usize = 4 * KB; @@ -39,7 +39,7 @@ async fn test_v2_hyper_commit_finalize_perf() { let new_account_balance = 1_000_000; - let ix = dlp::instruction_builder::v2_hyper_commit_finalize( + let ix = dlp::instruction_builder::v2_commit_finalize_inline( authority.pubkey(), DELEGATED_PDA_ID, &mut CommitFinalizeArgs { From 08b59f094e21f752f4c682b6b783fe011afdcf69 Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Thu, 12 Feb 2026 20:54:19 +0800 Subject: [PATCH 3/7] anchor init counter --- tests/v2-integration/counter/.gitignore | 7 + tests/v2-integration/counter/.prettierignore | 7 + tests/v2-integration/counter/Anchor.toml | 19 + tests/v2-integration/counter/Cargo.toml | 14 + .../counter/migrations/deploy.ts | 12 + tests/v2-integration/counter/package.json | 20 + .../counter/programs/counter/Cargo.toml | 22 + .../counter/programs/counter/Xargo.toml | 2 + .../counter/programs/counter/src/lib.rs | 16 + tests/v2-integration/counter/tests/counter.ts | 16 + tests/v2-integration/counter/tsconfig.json | 10 + tests/v2-integration/counter/yarn.lock | 1144 +++++++++++++++++ 12 files changed, 1289 insertions(+) create mode 100644 tests/v2-integration/counter/.gitignore create mode 100644 tests/v2-integration/counter/.prettierignore create mode 100644 tests/v2-integration/counter/Anchor.toml create mode 100644 tests/v2-integration/counter/Cargo.toml create mode 100644 tests/v2-integration/counter/migrations/deploy.ts create mode 100644 tests/v2-integration/counter/package.json create mode 100644 tests/v2-integration/counter/programs/counter/Cargo.toml create mode 100644 tests/v2-integration/counter/programs/counter/Xargo.toml create mode 100644 tests/v2-integration/counter/programs/counter/src/lib.rs create mode 100644 tests/v2-integration/counter/tests/counter.ts create mode 100644 tests/v2-integration/counter/tsconfig.json create mode 100644 tests/v2-integration/counter/yarn.lock diff --git a/tests/v2-integration/counter/.gitignore b/tests/v2-integration/counter/.gitignore new file mode 100644 index 00000000..2e0446b0 --- /dev/null +++ b/tests/v2-integration/counter/.gitignore @@ -0,0 +1,7 @@ +.anchor +.DS_Store +target +**/*.rs.bk +node_modules +test-ledger +.yarn diff --git a/tests/v2-integration/counter/.prettierignore b/tests/v2-integration/counter/.prettierignore new file mode 100644 index 00000000..41425834 --- /dev/null +++ b/tests/v2-integration/counter/.prettierignore @@ -0,0 +1,7 @@ +.anchor +.DS_Store +target +node_modules +dist +build +test-ledger diff --git a/tests/v2-integration/counter/Anchor.toml b/tests/v2-integration/counter/Anchor.toml new file mode 100644 index 00000000..a06c6266 --- /dev/null +++ b/tests/v2-integration/counter/Anchor.toml @@ -0,0 +1,19 @@ +[toolchain] +package_manager = "yarn" + +[features] +resolution = true +skip-lint = false + +[programs.localnet] +counter = "8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "localnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/tests/v2-integration/counter/Cargo.toml b/tests/v2-integration/counter/Cargo.toml new file mode 100644 index 00000000..f3977048 --- /dev/null +++ b/tests/v2-integration/counter/Cargo.toml @@ -0,0 +1,14 @@ +[workspace] +members = [ + "programs/*" +] +resolver = "2" + +[profile.release] +overflow-checks = true +lto = "fat" +codegen-units = 1 +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 diff --git a/tests/v2-integration/counter/migrations/deploy.ts b/tests/v2-integration/counter/migrations/deploy.ts new file mode 100644 index 00000000..439431ec --- /dev/null +++ b/tests/v2-integration/counter/migrations/deploy.ts @@ -0,0 +1,12 @@ +// Migrations are an early feature. Currently, they're nothing more than this +// single deploy script that's invoked from the CLI, injecting a provider +// configured from the workspace's Anchor.toml. + +import * as anchor from "@coral-xyz/anchor"; + +module.exports = async function (provider: anchor.AnchorProvider) { + // Configure client to use the provider. + anchor.setProvider(provider); + + // Add your deploy script here. +}; diff --git a/tests/v2-integration/counter/package.json b/tests/v2-integration/counter/package.json new file mode 100644 index 00000000..7d765e5a --- /dev/null +++ b/tests/v2-integration/counter/package.json @@ -0,0 +1,20 @@ +{ + "license": "ISC", + "scripts": { + "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", + "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.31.1" + }, + "devDependencies": { + "chai": "^4.3.4", + "mocha": "^9.0.3", + "ts-mocha": "^10.0.0", + "@types/bn.js": "^5.1.0", + "@types/chai": "^4.3.0", + "@types/mocha": "^9.0.0", + "typescript": "^5.7.3", + "prettier": "^2.6.2" + } +} diff --git a/tests/v2-integration/counter/programs/counter/Cargo.toml b/tests/v2-integration/counter/programs/counter/Cargo.toml new file mode 100644 index 00000000..a958ac6c --- /dev/null +++ b/tests/v2-integration/counter/programs/counter/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "counter" +version = "0.1.0" +description = "Created with Anchor" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "counter" + +[features] +default = [] +cpi = ["no-entrypoint"] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +idl-build = ["anchor-lang/idl-build"] + + +[dependencies] +anchor-lang = "0.31.1" + diff --git a/tests/v2-integration/counter/programs/counter/Xargo.toml b/tests/v2-integration/counter/programs/counter/Xargo.toml new file mode 100644 index 00000000..475fb71e --- /dev/null +++ b/tests/v2-integration/counter/programs/counter/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/tests/v2-integration/counter/programs/counter/src/lib.rs b/tests/v2-integration/counter/programs/counter/src/lib.rs new file mode 100644 index 00000000..627215f9 --- /dev/null +++ b/tests/v2-integration/counter/programs/counter/src/lib.rs @@ -0,0 +1,16 @@ +use anchor_lang::prelude::*; + +declare_id!("8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW"); + +#[program] +pub mod counter { + use super::*; + + pub fn initialize(ctx: Context) -> Result<()> { + msg!("Greetings from: {:?}", ctx.program_id); + Ok(()) + } +} + +#[derive(Accounts)] +pub struct Initialize {} diff --git a/tests/v2-integration/counter/tests/counter.ts b/tests/v2-integration/counter/tests/counter.ts new file mode 100644 index 00000000..600c2e52 --- /dev/null +++ b/tests/v2-integration/counter/tests/counter.ts @@ -0,0 +1,16 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { Counter } from "../target/types/counter"; + +describe("counter", () => { + // Configure the client to use the local cluster. + anchor.setProvider(anchor.AnchorProvider.env()); + + const program = anchor.workspace.counter as Program; + + it("Is initialized!", async () => { + // Add your test here. + const tx = await program.methods.initialize().rpc(); + console.log("Your transaction signature", tx); + }); +}); diff --git a/tests/v2-integration/counter/tsconfig.json b/tests/v2-integration/counter/tsconfig.json new file mode 100644 index 00000000..cd5d2e3d --- /dev/null +++ b/tests/v2-integration/counter/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai"], + "typeRoots": ["./node_modules/@types"], + "lib": ["es2015"], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true + } +} diff --git a/tests/v2-integration/counter/yarn.lock b/tests/v2-integration/counter/yarn.lock new file mode 100644 index 00000000..df7c18ce --- /dev/null +++ b/tests/v2-integration/counter/yarn.lock @@ -0,0 +1,1144 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.25.0": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" + integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== + +"@coral-xyz/anchor-errors@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.31.1.tgz#d635cbac2533973ae6bfb5d3ba1de89ce5aece2d" + integrity sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ== + +"@coral-xyz/anchor@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.31.1.tgz#0fdeebf45a3cb2e47e8ebbb815ca98542152962c" + integrity sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA== + dependencies: + "@coral-xyz/anchor-errors" "^0.31.1" + "@coral-xyz/borsh" "^0.31.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.69.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + eventemitter3 "^4.0.7" + pako "^2.0.3" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/borsh@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.31.1.tgz#5328e1e0921b75d7f4a62dd3f61885a938bc7241" + integrity sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@noble/curves@^1.4.2": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/hashes@1.8.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.3.0.tgz#6bf2bb565cb1ae880f8018635c92f751465d8695" + integrity sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw== + dependencies: + "@solana/errors" "2.3.0" + +"@solana/codecs-numbers@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz#ac7e7f38aaf7fcd22ce2061fbdcd625e73828dc6" + integrity sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/errors@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.3.0.tgz#4ac9380343dbeffb9dffbcb77c28d0e457c5fa31" + integrity sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ== + dependencies: + chalk "^5.4.1" + commander "^14.0.0" + +"@solana/web3.js@^1.69.0": + version "1.98.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.4.tgz#df51d78be9d865181ec5138b4e699d48e6895bbe" + integrity sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + "@solana/codecs-numbers" "^2.1.0" + agentkeepalive "^4.5.0" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.18" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.18.tgz#feeeabea0d10106ee25aaf900165df911ab6d3b1" + integrity sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== + dependencies: + tslib "^2.8.0" + +"@types/bn.js@^5.1.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.2.0.tgz#4349b9710e98f9ab3cdc50f1c5e4dcbd8ef29c80" + integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== + dependencies: + "@types/node" "*" + +"@types/chai@^4.3.0": + version "4.3.20" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" + integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mocha@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node@*": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.3.tgz#9c18245be768bdb4ce631566c7da303a5c99a7f8" + integrity sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ== + dependencies: + undici-types "~7.16.0" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +agentkeepalive@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +buffer-from@^1.0.0, buffer-from@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-layout@^1.2.0, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.1.0.tgz#a4623541dd23867626bb08a051ec0d2ec0b70294" + integrity sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw== + dependencies: + node-gyp-build "^4.3.0" + +camelcase@^6.0.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai@^4.3.4: + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.4.1: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^14.0.0: + version "14.0.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.3.tgz#425d79b48f9af82fcd9e4fc1ea8af6c5ec07bbc2" + integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +cross-fetch@^3.1.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== + dependencies: + node-fetch "^2.7.0" + +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^3.1.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.1.tgz#e7fae480379d2e944c68ff0f5e1c29b6e28c77ab" + integrity sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jayson@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.3.0.tgz#22eb8f3dcf37a5e893830e5451f32bde6d1bde4d" + integrity sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + stream-json "^1.9.1" + uuid "^8.3.2" + ws "^7.5.10" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mocha@^9.0.3: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prettier@^2.6.2: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +rpc-websockets@^9.0.2: + version "9.3.3" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.3.tgz#b6be8b217f2a19bbc5fc184ef492e992b524556b" + integrity sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +stream-chain@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== + +stream-json@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" + integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== + dependencies: + stream-chain "^2.2.5" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +superstruct@^0.15.4: + version "0.15.5" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== + +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-mocha@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.1.0.tgz#17a1c055f5f7733fd82447c4420740db87221bc8" + integrity sha512-T0C0Xm3/WqCuF2tpa0GNGESTBoKZaiqdUP8guNv4ZY316AFXlyidnrzQ1LUrCT0Wb1i3J0zFTgOh/55Un44WdA== + dependencies: + ts-node "7.0.1" + optionalDependencies: + tsconfig-paths "^3.5.0" + +ts-node@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== + dependencies: + arrify "^1.0.0" + buffer-from "^1.1.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.5.6" + yn "^2.0.0" + +tsconfig-paths@^3.5.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +typescript@^5.7.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.5.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 7e6a799c7a1190f7e75873c2f6fd5fd5e9c3e7d6 Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Thu, 12 Feb 2026 21:23:40 +0800 Subject: [PATCH 4/7] built --- tests/v2-integration/counter/Anchor.toml | 1 + tests/v2-integration/counter/Cargo.lock | 3306 +++++++++++++++++ .../counter/programs/counter/Cargo.toml | 7 +- .../counter/programs/counter/src/lib.rs | 88 +- .../counter/rust-toolchain.toml | 4 + 5 files changed, 3403 insertions(+), 3 deletions(-) create mode 100644 tests/v2-integration/counter/Cargo.lock create mode 100644 tests/v2-integration/counter/rust-toolchain.toml diff --git a/tests/v2-integration/counter/Anchor.toml b/tests/v2-integration/counter/Anchor.toml index a06c6266..cff2222b 100644 --- a/tests/v2-integration/counter/Anchor.toml +++ b/tests/v2-integration/counter/Anchor.toml @@ -1,5 +1,6 @@ [toolchain] package_manager = "yarn" +anchor_version = "0.32.1" [features] resolution = true diff --git a/tests/v2-integration/counter/Cargo.lock b/tests/v2-integration/counter/Cargo.lock new file mode 100644 index 00000000..fec61280 --- /dev/null +++ b/tests/v2-integration/counter/Cargo.lock @@ -0,0 +1,3306 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "anchor-attribute-access-control" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a883ca44ef14b2113615fc6d3a85fefc68b5002034e88db37f7f1f802f88aa9" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c4d97763b29030412b4b80715076377edc9cc63bc3c9e667297778384b9fd2" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae3328bbf9bbd517a51621b1ba6cbec06cbbc25e8cfc7403bddf69bcf088206" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2398a6d9e16df1ee9d7d37d970a8246756de898c8dd16ef6bdbe4da20cf39a" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12758f4ec2f0e98d4d56916c6fe95cb23d74b8723dd902c762c5ef46ebe7b65" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7193b5af2649813584aae6e3569c46fd59616a96af2083c556b13136c3830f" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d332d1a13c0fca1a446de140b656e66110a5e8406977dcb6a41e5d6f323760b0" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8656e4af182edaeae665fa2d2d7ee81148518b5bd0be9a67f2a381bb17da7d46" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcff2a083560cd79817db07d89a4de39a2c4b2eaa00c1742cf0df49b25ff2bed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67d85d5376578f12d840c29ff323190f6eecd65b00a0b5f2b2f232751d049cc" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-constant", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-program", + "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", + "anchor-lang-idl", + "base64 0.21.7", + "bincode", + "borsh 0.10.4", + "bytemuck", + "solana-account-info 2.3.0", + "solana-clock 2.2.3", + "solana-cpi 2.2.1", + "solana-define-syscall 2.3.0", + "solana-feature-gate-interface", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-invoke", + "solana-loader-v3-interface 3.0.0", + "solana-msg 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option 2.2.1", + "solana-program-pack 2.2.1", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-sysvar-id 2.2.1", + "thiserror 1.0.69", +] + +[[package]] +name = "anchor-lang-idl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-syn" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93b69aa7d099b59378433f6d7e20e1008fc10c69e48b220270e5b3f2ec4c8be" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "anyhow" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "cargo_toml" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" +dependencies = [ + "serde", + "toml 0.8.23", +] + +[[package]] +name = "cc" +version = "1.2.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "counter" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "ephemeral-rollups-sdk", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.115", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ephemeral-rollups-sdk" +version = "0.8.0" +dependencies = [ + "anchor-lang", + "base64ct", + "borsh 0.10.4", + "ephemeral-rollups-sdk-attribute-action", + "ephemeral-rollups-sdk-attribute-commit", + "ephemeral-rollups-sdk-attribute-delegate", + "ephemeral-rollups-sdk-attribute-ephemeral", + "getrandom 0.2.17", + "magicblock-delegation-program", + "magicblock-magic-program-api", + "solana-program 2.3.0", + "solana-system-interface 2.0.0", +] + +[[package]] +name = "ephemeral-rollups-sdk-attribute-action" +version = "0.8.0" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ephemeral-rollups-sdk-attribute-commit" +version = "0.8.0" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ephemeral-rollups-sdk-attribute-delegate" +version = "0.8.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ephemeral-rollups-sdk-attribute-ephemeral" +version = "0.8.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.9", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.181" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5" + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "magicblock-delegation-program" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0e25f9e37194cc27c0f1d3dbc00e83795f7f4012f1a99c20bc557bdeb62e13e" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "num_enum", + "solana-program 3.0.0", + "static_assertions", +] + +[[package]] +name = "magicblock-magic-program-api" +version = "0.6.1" +source = "git+https://github.com/magicblock-labs/magicblock-validator.git?branch=snawaz%2Fschedule-commit-finalize#3895680ff3d51993f26cf6223ded0b2224a2bf89" +dependencies = [ + "bincode", + "serde", + "solana-program 2.3.0", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "solana-account-info 2.3.0", + "solana-clock 2.2.3", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +dependencies = [ + "bincode", + "serde", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-account-info" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" +dependencies = [ + "bincode", + "serde_core", + "solana-address 2.1.0", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", +] + +[[package]] +name = "solana-address" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" +dependencies = [ + "solana-address 2.1.0", +] + +[[package]] +name = "solana-address" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998227476aed49e1c63dec0e89341b768a2cf3bd22913c3ed8baa985cda882c9" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "five8 1.0.0", + "five8_const 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.0", + "solana-define-syscall 5.0.0", + "solana-program-error 3.0.0", + "solana-sanitize 3.0.1", + "solana-sha256-hasher 3.1.0", + "wincode", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" +dependencies = [ + "bincode", + "bytemuck", + "serde", + "serde_derive", + "solana-clock 2.2.3", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e8df0b083c10ce32490410f3795016b1b5d9b4d094658c0a5e496753645b7cd" +dependencies = [ + "solana-clock 3.0.0", + "solana-pubkey 4.0.0", + "solana-sdk-ids 3.1.0", + "solana-slot-hashes 3.0.0", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-atomic-u64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-big-mod-exp" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-big-mod-exp" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-bincode" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +dependencies = [ + "bincode", + "serde", + "solana-instruction 2.3.3", +] + +[[package]] +name = "solana-blake3-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +dependencies = [ + "blake3", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-blake3-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" +dependencies = [ + "blake3", + "solana-define-syscall 4.0.1", + "solana-hash 4.1.0", +] + +[[package]] +name = "solana-borsh" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", +] + +[[package]] +name = "solana-borsh" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" +dependencies = [ + "borsh 1.6.0", +] + +[[package]] +name = "solana-clock" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8584296123df8fe229b95e2ebfd37ae637fe9db9b7d4dd677ac5a78e80dbfce" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-clock" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-cpi" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" +dependencies = [ + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-stable-layout 2.2.1", +] + +[[package]] +name = "solana-cpi" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" +dependencies = [ + "solana-account-info 3.1.0", + "solana-define-syscall 4.0.1", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", + "solana-pubkey 4.0.0", + "solana-stable-layout 3.0.0", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[package]] +name = "solana-define-syscall" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" + +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-define-syscall" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" + +[[package]] +name = "solana-epoch-rewards" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 2.3.0", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-epoch-rewards" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-epoch-schedule" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-epoch-schedule" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-epoch-stake" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc6693d0ea833b880514b9b88d95afb80b42762dca98b0712465d1fcbbcb89e" +dependencies = [ + "solana-define-syscall 3.0.0", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-example-mocks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface 2.2.2", + "solana-clock 2.2.3", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-keccak-hasher 2.2.1", + "solana-message 2.4.0", + "solana-nonce 2.2.1", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-example-mocks" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface 3.0.1", + "solana-clock 3.0.0", + "solana-hash 3.1.0", + "solana-instruction 3.1.0", + "solana-keccak-hasher 3.1.0", + "solana-message 3.1.0", + "solana-nonce 3.0.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", + "solana-system-interface 2.0.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-fee-calculator" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-fee-calculator" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8 0.2.1", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-sanitize 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-hash" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" +dependencies = [ + "solana-hash 4.1.0", +] + +[[package]] +name = "solana-hash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b6100d68f90726ddb4d2ac7d00e8b6cf9ce8e4ccdfbb9112b1d766045753241" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.0", + "solana-sanitize 3.0.1", + "wincode", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall 2.3.0", + "solana-pubkey 2.4.0", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1b699a2c1518028a9982e255e0eca10c44d90006542d9d7f9f40dbce3f7c78" +dependencies = [ + "bincode", + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-define-syscall 4.0.1", + "solana-instruction-error", + "solana-pubkey 4.0.0", +] + +[[package]] +name = "solana-instruction-error" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b04259e03c05faf38a8c24217b5cfe4c90572ae6184ab49cddb1584fdd756d3f" +dependencies = [ + "num-traits", + "solana-program-error 3.0.0", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags", + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serialize-utils 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" +dependencies = [ + "bitflags", + "solana-account-info 3.1.0", + "solana-instruction 3.1.0", + "solana-instruction-error", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-serialize-utils 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-invoke" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f5693c6de226b3626658377168b0184e94e8292ff16e3d31d4766e65627565" +dependencies = [ + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.3.3", + "solana-program-entrypoint 2.3.0", + "solana-stable-layout 2.2.1", +] + +[[package]] +name = "solana-keccak-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +dependencies = [ + "sha3", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-keccak-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" +dependencies = [ + "sha3", + "solana-define-syscall 4.0.1", + "solana-hash 4.1.0", +] + +[[package]] +name = "solana-last-restart-slot" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-last-restart-slot" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-loader-v2-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-loader-v4-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "serde", + "serde_derive", + "solana-bincode", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-message" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" +dependencies = [ + "lazy_static", + "serde", + "serde_derive", + "solana-address 2.1.0", + "solana-hash 4.1.0", + "solana-instruction 3.1.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.2.0", + "solana-transaction-error 3.0.0", +] + +[[package]] +name = "solana-msg" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +dependencies = [ + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-msg" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" +dependencies = [ + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-native-token" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[package]] +name = "solana-nonce" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-pubkey 2.4.0", + "solana-sha256-hasher 2.3.0", +] + +[[package]] +name = "solana-nonce" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" +dependencies = [ + "solana-fee-calculator 3.0.0", + "solana-hash 3.1.0", + "solana-pubkey 3.0.0", + "solana-sha256-hasher 3.1.0", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.17", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info 2.3.0", + "solana-address-lookup-table-interface 2.2.2", + "solana-atomic-u64 2.2.1", + "solana-big-mod-exp 2.2.1", + "solana-bincode", + "solana-blake3-hasher 2.2.1", + "solana-borsh 2.2.1", + "solana-clock 2.2.3", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-example-mocks 2.2.1", + "solana-feature-gate-interface", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-keccak-hasher 2.2.1", + "solana-last-restart-slot 2.2.1", + "solana-loader-v2-interface", + "solana-loader-v3-interface 5.0.0", + "solana-loader-v4-interface", + "solana-message 2.4.0", + "solana-msg 2.2.1", + "solana-native-token 2.3.0", + "solana-nonce 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option 2.2.1", + "solana-program-pack 2.2.1", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-secp256k1-recover 2.2.1", + "solana-serde-varint 2.2.2", + "solana-serialize-utils 2.2.1", + "solana-sha256-hasher 2.3.0", + "solana-short-vec 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stable-layout 2.2.1", + "solana-stake-interface", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-sysvar-id 2.2.1", + "solana-vote-interface", + "thiserror 2.0.18", + "wasm-bindgen", +] + +[[package]] +name = "solana-program" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" +dependencies = [ + "memoffset", + "solana-account-info 3.1.0", + "solana-big-mod-exp 3.0.0", + "solana-blake3-hasher 3.1.0", + "solana-borsh 3.0.0", + "solana-clock 3.0.0", + "solana-cpi 3.1.0", + "solana-define-syscall 3.0.0", + "solana-epoch-rewards 3.0.0", + "solana-epoch-schedule 3.0.0", + "solana-epoch-stake", + "solana-example-mocks 3.0.0", + "solana-fee-calculator 3.0.0", + "solana-hash 3.1.0", + "solana-instruction 3.1.0", + "solana-instruction-error", + "solana-instructions-sysvar 3.0.0", + "solana-keccak-hasher 3.1.0", + "solana-last-restart-slot 3.0.0", + "solana-msg 3.0.0", + "solana-native-token 3.0.0", + "solana-program-entrypoint 3.1.1", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", + "solana-program-option 3.0.0", + "solana-program-pack 3.0.0", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-secp256k1-recover 3.1.0", + "solana-serde-varint 3.0.0", + "solana-serialize-utils 3.1.0", + "solana-sha256-hasher 3.1.0", + "solana-short-vec 3.2.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-stable-layout 3.0.0", + "solana-sysvar 3.1.1", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info 2.3.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-program-entrypoint" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" +dependencies = [ + "solana-account-info 3.1.0", + "solana-define-syscall 4.0.1", + "solana-program-error 3.0.0", + "solana-pubkey 4.0.0", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-program-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" +dependencies = [ + "borsh 1.6.0", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-program-memory" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" +dependencies = [ + "solana-define-syscall 4.0.1", +] + +[[package]] +name = "solana-program-option" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" + +[[package]] +name = "solana-program-option" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" + +[[package]] +name = "solana-program-pack" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" +dependencies = [ + "solana-program-error 2.2.2", +] + +[[package]] +name = "solana-program-pack" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" +dependencies = [ + "solana-program-error 3.0.0", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "five8 0.2.1", + "five8_const 0.1.4", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-decode-error", + "solana-define-syscall 2.3.0", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.0", + "wasm-bindgen", +] + +[[package]] +name = "solana-pubkey" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" +dependencies = [ + "solana-address 1.1.0", +] + +[[package]] +name = "solana-pubkey" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f7104d456b58e1418c21a8581e89810278d1190f70f27ece7fc0b2c9282a57" +dependencies = [ + "solana-address 2.1.0", +] + +[[package]] +name = "solana-rent" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-rent" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-sdk-ids" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" +dependencies = [ + "solana-address 2.1.0", +] + +[[package]] +name = "solana-sdk-macro" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "solana-sdk-macro" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "libsecp256k1", + "solana-define-syscall 2.3.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de18cfdab99eeb940fbedd8c981fa130c0d76252da75d05446f22fae8b51932" +dependencies = [ + "k256", + "solana-define-syscall 4.0.1", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5174c57d5ff3c1995f274d17156964664566e2cde18a07bba1586d35a70d3b" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" +dependencies = [ + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-serialize-utils" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e41dd8feea239516c623a02f0a81c2367f4b604d7965237fed0751aeec33ed" +dependencies = [ + "solana-instruction-error", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", +] + +[[package]] +name = "solana-sha256-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 4.0.1", + "solana-hash 4.1.0", +] + +[[package]] +name = "solana-short-vec" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-short-vec" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3bd991c2cc415291c86bb0b6b4d53e93d13bb40344e4c5a2884e0e4f5fa93f" +dependencies = [ + "serde_core", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 2.3.0", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-slot-hashes" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-slot-history" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-slot-history" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-stable-layout" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +dependencies = [ + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-stable-layout" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" +dependencies = [ + "solana-instruction 3.1.0", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-stake-interface" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-clock 2.2.3", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-system-interface 1.0.0", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-system-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +dependencies = [ + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "wasm-bindgen", +] + +[[package]] +name = "solana-system-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-instruction 3.1.0", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 2.3.0", + "solana-clock 2.2.3", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-instructions-sysvar 2.2.2", + "solana-last-restart-slot 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stake-interface", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-sysvar" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 3.1.0", + "solana-clock 3.0.0", + "solana-define-syscall 4.0.1", + "solana-epoch-rewards 3.0.0", + "solana-epoch-schedule 3.0.0", + "solana-fee-calculator 3.0.0", + "solana-hash 4.1.0", + "solana-instruction 3.1.0", + "solana-last-restart-slot 3.0.0", + "solana-program-entrypoint 3.1.1", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", + "solana-pubkey 4.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-sysvar-id" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" +dependencies = [ + "solana-address 2.1.0", + "solana-sdk-ids 3.1.0", +] + +[[package]] +name = "solana-transaction-error" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +dependencies = [ + "solana-instruction 2.3.3", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-transaction-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" +dependencies = [ + "solana-instruction-error", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +dependencies = [ + "bincode", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-clock 2.2.3", + "solana-decode-error", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serde-varint 2.2.2", + "solana-serialize-utils 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.115" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e614ed320ac28113fa64972c4262d5dbc89deacdfd00c34a3e4cea073243c12" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.7+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "247eaa3197818b831697600aadf81514e577e0cba5eab10f7e064e78ae154df1" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.115", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wincode" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5cec722a3274e47d1524cbe2cea762f2c19d615bd9d73ada21db9066349d57e" +dependencies = [ + "proc-macro2", + "quote", + "thiserror 2.0.18", + "wincode-derive", +] + +[[package]] +name = "wincode-derive" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8961eb04054a1b2e026b5628e24da7e001350249a787e1a85aa961f33dc5f286" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.8.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/tests/v2-integration/counter/programs/counter/Cargo.toml b/tests/v2-integration/counter/programs/counter/Cargo.toml index a958ac6c..01026bd3 100644 --- a/tests/v2-integration/counter/programs/counter/Cargo.toml +++ b/tests/v2-integration/counter/programs/counter/Cargo.toml @@ -16,7 +16,12 @@ no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] +# these are used by the anchor macro-generated code +anchor-debug = [] +custom-panic = [] +custom-heap = [] [dependencies] -anchor-lang = "0.31.1" +anchor-lang = "0.32.1" +ephemeral-rollups-sdk = { path = "/Users/snawaz/projects/mb/ephemeral-rollups-sdk/rust/sdk", features = ["anchor"] } diff --git a/tests/v2-integration/counter/programs/counter/src/lib.rs b/tests/v2-integration/counter/programs/counter/src/lib.rs index 627215f9..251e7783 100644 --- a/tests/v2-integration/counter/programs/counter/src/lib.rs +++ b/tests/v2-integration/counter/programs/counter/src/lib.rs @@ -1,16 +1,100 @@ use anchor_lang::prelude::*; +use ephemeral_rollups_sdk::anchor::{delegate, ephemeral}; +use ephemeral_rollups_sdk::cpi::DelegateConfig; declare_id!("8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW"); +#[ephemeral] #[program] pub mod counter { use super::*; + /// Create the PDA and initialize counter = 0 pub fn initialize(ctx: Context) -> Result<()> { - msg!("Greetings from: {:?}", ctx.program_id); + let counter = &mut ctx.accounts.counter; + counter.value = 0; Ok(()) } + + /// Increment counter by 1 + pub fn increment(ctx: Context) -> Result<()> { + let counter = &mut ctx.accounts.counter; + + counter.value = + counter.value.checked_add(1).ok_or(ErrorCode::Overflow)?; + + Ok(()) + } + + /// (Optional) Reset to zero (useful in tests) + pub fn reset(ctx: Context) -> Result<()> { + let counter = &mut ctx.accounts.counter; + counter.value = 0; + Ok(()) + } +} + +/* ================================ + Accounts +================================ */ + +#[derive(Accounts)] +pub struct Initialize<'info> { + #[account( + init, + payer = user, + space = 8 + Counter::SIZE, + seeds = [b"counter", user.key().as_ref()], + bump + )] + pub counter: Account<'info, Counter>, + + #[account(mut)] + pub user: Signer<'info>, + + pub system_program: Program<'info, System>, } +#[delegate] #[derive(Accounts)] -pub struct Initialize {} +pub struct DelegateCounter<'info> { + pub payer: Signer<'info>, + /// CHECK: The pda to delegate + #[account(mut, del, seeds = [b"counter", payer.key().as_ref()], bump)] + pub pda: AccountInfo<'info>, +} + +#[derive(Accounts)] +pub struct Increment<'info> { + #[account( + mut, + seeds = [b"counter", user.key().as_ref()], + bump + )] + pub counter: Account<'info, Counter>, + + pub user: Signer<'info>, +} + +/* ================================ + State +================================ */ + +#[account] +pub struct Counter { + pub value: u64, +} + +impl Counter { + pub const SIZE: usize = 8; // u64 +} + +/* ================================ + Errors +================================ */ + +#[error_code] +pub enum ErrorCode { + #[msg("Counter overflow")] + Overflow, +} diff --git a/tests/v2-integration/counter/rust-toolchain.toml b/tests/v2-integration/counter/rust-toolchain.toml new file mode 100644 index 00000000..893e18f5 --- /dev/null +++ b/tests/v2-integration/counter/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "1.90.0" +components = [ "rustfmt", "rust-analyzer", "clippy"] +profile = "minimal" From e2f13864094dee4d580e28163987deacc749838e Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Fri, 13 Feb 2026 03:25:16 +0800 Subject: [PATCH 5/7] Setup vitest replacing mocha stuff --- src/v2/instruction.rs | 53 +- tests/v2-integration/counter/Anchor.toml | 8 +- tests/v2-integration/counter/Makefile | 2 + .../v2-integration/counter/package-lock.json | 3596 +++++++++++++++++ tests/v2-integration/counter/package.json | 13 +- .../counter/programs/counter/src/lib.rs | 6 +- .../counter/scripts/run-magicblock | 13 + .../counter/scripts/run-validator | 18 + .../v2-integration/counter/secrets/admin.json | 1 + tests/v2-integration/counter/setup.ts | 111 + .../tests/{counter.ts => counter.test.ts} | 2 + tests/v2-integration/counter/utils.ts | 36 + tests/v2-integration/counter/vitest.config.ts | 14 + tests/v2-integration/counter/yarn.lock | 945 ++++- 14 files changed, 4614 insertions(+), 204 deletions(-) create mode 100644 tests/v2-integration/counter/Makefile create mode 100644 tests/v2-integration/counter/package-lock.json create mode 100755 tests/v2-integration/counter/scripts/run-magicblock create mode 100755 tests/v2-integration/counter/scripts/run-validator create mode 100644 tests/v2-integration/counter/secrets/admin.json create mode 100644 tests/v2-integration/counter/setup.ts rename tests/v2-integration/counter/tests/{counter.ts => counter.test.ts} (81%) create mode 100644 tests/v2-integration/counter/utils.ts create mode 100644 tests/v2-integration/counter/vitest.config.ts diff --git a/src/v2/instruction.rs b/src/v2/instruction.rs index 3d4329db..24225f38 100644 --- a/src/v2/instruction.rs +++ b/src/v2/instruction.rs @@ -15,7 +15,12 @@ pub enum DlpInstruction { DelegateWithAnyValidator = 102, /// - /// Commit group: [111, 130] => 20 slots + /// Commit group: [111, 140] => 30 slots + /// + /// From users perspective, there are only 3 categories of commits: + /// - commit + /// - commit-inline + /// - commit-finalize /// Commit = 111, CommitFromBuffer = 112, @@ -31,38 +36,48 @@ pub enum DlpInstruction { CommitFinalizeInlineResize = 121, CommitFinalizeInlineResizeFromBuffer = 122, + // CommitInline32 = 113, + // CommitInline32FromBuffer = 114, + // CommitInline32Resize = 115, + // CommitInline32ResizeFromBuffer = 116, + + // CommitFinalizeInline32 = 119, + // CommitFinalizeInline32FromBuffer = 120, + // CommitFinalizeInline32Resize = 121, + // CommitFinalizeInline32ResizeFromBuffer = 122, + /// - /// Finalize group: [131, 140] => 10 slots + /// Finalize group: [141, 150] => 10 slots /// - Finalize = 131, + Finalize = 141, /// - /// Undelegate group: [141, 150] => 10 slots + /// Undelegate group: [151, 160] => 10 slots /// - Undelegate = 141, - UndelegateConfinedAccount = 132, + Undelegate = 151, + UndelegateConfinedAccount = 152, /// - /// User group: [151, 160] => 10 slots + /// User group: [161, 170] => 10 slots /// - CallHandler = 151, + CallHandler = 161, /// - /// Vaults group: [161, 170] => 10 slots + /// Vaults group: [171, 180] => 10 slots /// - InitProtocolFeesVault = 161, - ProtocolClaimFees = 162, - InitValidatorFeesVault = 163, - ValidatorClaimFees = 164, - CloseValidatorFeesVault = 165, + InitProtocolFeesVault = 171, + ProtocolClaimFees = 172, + InitValidatorFeesVault = 173, + ValidatorClaimFees = 174, + CloseValidatorFeesVault = 175, /// - /// Misc group: [171, 190] => 20 slots + /// Misc group: [181, 200] => 20 slots /// - WhitelistValidatorForProgram = 171, - TopUpEphemeralBalance = 172, - DelegateEphemeralBalance = 173, - CloseEphemeralBalance = 174, + WhitelistValidatorForProgram = 181, + TopUpEphemeralBalance = 182, + DelegateEphemeralBalance = 183, + CloseEphemeralBalance = 184, } impl DlpInstruction { diff --git a/tests/v2-integration/counter/Anchor.toml b/tests/v2-integration/counter/Anchor.toml index cff2222b..13c6c38d 100644 --- a/tests/v2-integration/counter/Anchor.toml +++ b/tests/v2-integration/counter/Anchor.toml @@ -14,7 +14,11 @@ url = "https://api.apr.dev" [provider] cluster = "localnet" -wallet = "~/.config/solana/id.json" +wallet = "../counter/secrets/admin.json" [scripts] -test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" +#test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" +#test = "echo 'hello world'" +#test = "vitest run" +test = "yarn run test" + diff --git a/tests/v2-integration/counter/Makefile b/tests/v2-integration/counter/Makefile new file mode 100644 index 00000000..23407df1 --- /dev/null +++ b/tests/v2-integration/counter/Makefile @@ -0,0 +1,2 @@ +all: + anchor test --skip-local-validator --skip-build --skip-deploy diff --git a/tests/v2-integration/counter/package-lock.json b/tests/v2-integration/counter/package-lock.json new file mode 100644 index 00000000..70d655a2 --- /dev/null +++ b/tests/v2-integration/counter/package-lock.json @@ -0,0 +1,3596 @@ +{ + "name": "counter", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "license": "ISC", + "dependencies": { + "@coral-xyz/anchor": "^0.31.1" + }, + "devDependencies": { + "@types/bn.js": "^5.1.0", + "@types/chai": "^4.3.0", + "@types/mocha": "^9.0.0", + "chai": "^4.3.4", + "mocha": "^9.0.3", + "prettier": "^2.6.2", + "ts-mocha": "^10.0.0", + "tsx": "^4.21.0", + "typescript": "^5.7.3", + "vitest": "^4.0.18" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@coral-xyz/anchor": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.31.1.tgz", + "integrity": "sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@coral-xyz/anchor-errors": "^0.31.1", + "@coral-xyz/borsh": "^0.31.1", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.69.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=17" + } + }, + "node_modules/@coral-xyz/anchor-errors": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor-errors/-/anchor-errors-0.31.1.tgz", + "integrity": "sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@coral-xyz/borsh": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.31.1.tgz", + "integrity": "sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.69.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", + "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", + "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/errors": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", + "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^14.0.0" + }, + "bin": { + "errors": "bin/cli.mjs" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/errors/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@solana/errors/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.98.4", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz", + "integrity": "sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "@solana/codecs-numbers": "^2.1.0", + "agentkeepalive": "^4.5.0", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", + "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/mocha": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@vitest/expect/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/@vitest/expect/node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" + }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-layout": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", + "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", + "license": "MIT", + "engines": { + "node": ">=4.5" + } + }, + "node_modules/bufferutil": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", + "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jayson": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.3.0.tgz", + "integrity": "sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==", + "license": "MIT", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "stream-json": "^1.9.1", + "uuid": "^8.3.2", + "ws": "^7.5.10" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rpc-websockets": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.3.3.tgz", + "integrity": "sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA==", + "license": "LGPL-3.0-only", + "dependencies": { + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/rpc-websockets/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "license": "BSD-3-Clause" + }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superstruct": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-mocha": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.1.0.tgz", + "integrity": "sha512-T0C0Xm3/WqCuF2tpa0GNGESTBoKZaiqdUP8guNv4ZY316AFXlyidnrzQ1LUrCT0Wb1i3J0zFTgOh/55Un44WdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X" + } + }, + "node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.1.tgz", + "integrity": "sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/tests/v2-integration/counter/package.json b/tests/v2-integration/counter/package.json index 7d765e5a..0a34671a 100644 --- a/tests/v2-integration/counter/package.json +++ b/tests/v2-integration/counter/package.json @@ -1,20 +1,23 @@ { "license": "ISC", "scripts": { + "test": "vitest --run", "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" }, "dependencies": { - "@coral-xyz/anchor": "^0.31.1" + "@coral-xyz/anchor": "^0.32.1" }, "devDependencies": { - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", "@types/bn.js": "^5.1.0", "@types/chai": "^4.3.0", "@types/mocha": "^9.0.0", + "chai": "^4.3.4", + "mocha": "^9.0.3", + "prettier": "^2.6.2", + "ts-mocha": "^10.0.0", + "tsx": "^4.21.0", "typescript": "^5.7.3", - "prettier": "^2.6.2" + "vitest": "^4.0.18" } } diff --git a/tests/v2-integration/counter/programs/counter/src/lib.rs b/tests/v2-integration/counter/programs/counter/src/lib.rs index 251e7783..a0e14dfb 100644 --- a/tests/v2-integration/counter/programs/counter/src/lib.rs +++ b/tests/v2-integration/counter/programs/counter/src/lib.rs @@ -1,6 +1,8 @@ use anchor_lang::prelude::*; -use ephemeral_rollups_sdk::anchor::{delegate, ephemeral}; -use ephemeral_rollups_sdk::cpi::DelegateConfig; +use ephemeral_rollups_sdk::{ + anchor::{delegate, ephemeral}, + cpi::DelegateConfig, +}; declare_id!("8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW"); diff --git a/tests/v2-integration/counter/scripts/run-magicblock b/tests/v2-integration/counter/scripts/run-magicblock new file mode 100755 index 00000000..b0ec69f4 --- /dev/null +++ b/tests/v2-integration/counter/scripts/run-magicblock @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -xeuo pipefail + +rm -rf ./test-ledger-magicblock + +# solana airdrop 20 mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev +solana airdrop 20 tEsT3eV6RFCWs1BZ7AXTzasHqTtMnMLCB2tjQ42TDXD + +# RUST_LOG=info ephemeral-validator --accounts-lifecycle ephemeral --rpc-port 7799 --remote-url "http://localhost:8899" + +RUST_LOG=info ../magicblock-validator/target/release/magicblock-validator --lifecycle ephemeral --listen 0.0.0.0:7799 --remotes "http://localhost:8899" + + diff --git a/tests/v2-integration/counter/scripts/run-validator b/tests/v2-integration/counter/scripts/run-validator new file mode 100755 index 00000000..4c1c5145 --- /dev/null +++ b/tests/v2-integration/counter/scripts/run-validator @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -xeuo pipefail + +rm -rf ./test-ledger + +#cargo build-sbf +#cargo build-sbf --features logging unit_test_config log-cost + +solana-test-validator \ + --reset \ + --rpc-port 8899 \ + --bpf-program DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh ../../../target/deploy/dlp.so \ + --bpf-program 8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW ./target/deploy/counter.so \ + #--clone mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev \ + #--clone EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX \ + #--clone 7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg \ + #--url "https://api.devnet.solana.com" + diff --git a/tests/v2-integration/counter/secrets/admin.json b/tests/v2-integration/counter/secrets/admin.json new file mode 100644 index 00000000..73a9d66d --- /dev/null +++ b/tests/v2-integration/counter/secrets/admin.json @@ -0,0 +1 @@ +[253,10,149,82,131,188,183,151,158,44,73,91,174,72,6,46,18,145,15,114,9,197,106,230,153,58,2,61,250,229,64,206,150,12,231,71,168,70,194,36,149,232,43,104,73,202,187,141,196,201,107,161,218,75,76,217,67,139,220,181,103,181,68,176] \ No newline at end of file diff --git a/tests/v2-integration/counter/setup.ts b/tests/v2-integration/counter/setup.ts new file mode 100644 index 00000000..7472fcb3 --- /dev/null +++ b/tests/v2-integration/counter/setup.ts @@ -0,0 +1,111 @@ +import { execSync, spawn } from "child_process"; +import path from "path"; + +import { + PAYER_FILE, + COUNTER_PROGRAM_ID, + DLP_PROGRAM_ID, + PAYER, + wait, +} from "./utils"; + +export const COUNTER_SO = path.resolve("./target/deploy/counter.so"); +export const DLP_SO = path.resolve("../../../target/deploy/dlp.so"); + +let validatorProcess: ReturnType | null = null; + +async function waitForRPC() { + const maxRetries = 40; //40; + for (let i = 0; i < maxRetries; i++) { + try { + console.log(`check: solana --url ${process.env.RPC_URL} get-slot`); + + execSync(`solana --url ${process.env.RPC_URL} get-slot`, { + stdio: "overlapped", + }); + return; + } catch (e) { + console.log("waitForRPC failed with: ", e); + await wait(500); + } + } + throw new Error("RPC did not come online in time"); +} + +beforeEach(async () => { + console.log("🔥 Starting solana-test-validator..."); + + const FAUCET_PORT = 9900 + Math.floor(Math.random() * 1000); + const RPC_PORT = 8899 + Math.floor(Math.random() * 1000); + + console.log("Use random ports: ", { RPC_PORT, FAUCET_PORT }); + + process.env.RPC_PORT = `${RPC_PORT}`; + process.env.FAUCET_PORT = `${FAUCET_PORT}`; + process.env.RPC_URL = `http://127.0.0.1:${RPC_PORT}`; + + if (process.env.RPC_URL) { + return; + } + + try { + validatorProcess = spawn( + "solana-test-validator", + [ + "--reset", + + "--rpc-port", + process.env.RPC_PORT, + "--faucet-port", + process.env.FAUCET_PORT, + + // "--quiet", // less logs + + // "--upgradeable-program", + // DLP_PROGRAM_ID.toBase58(), + // DLP_SO, + // PAYER.publicKey.toBase58(), + + // "--upgradeable-program", + // COUNTER_PROGRAM_ID.toBase58(), + // COUNTER_SO, + // PAYER.publicKey.toBase58(), + ], + { + stdio: "inherit", + env: process.env, + } + ); + } catch (e) { + console.log("starting solana-test-validator failed with: ", e); + } + + console.log("⏳ Waiting for RPC..."); + await waitForRPC(); + console.log("✅ RPC online"); + + try { + execSync( + `solana airdrop --url ${process.env.RPC_URL} --keypair ${PAYER_FILE} 100` + ); + execSync( + `solana program --url ${process.env.RPC_URL} show ${DLP_PROGRAM_ID}` + ); + execSync( + `solana program --url ${process.env.RPC_URL} show ${COUNTER_PROGRAM_ID}` + ); + console.log("✅ Program loaded into validator"); + } catch { + throw new Error("❌ Program failed to load"); + } +}); + +afterEach(async () => { + console.log("🧹 Shutting down validator..."); + + if (validatorProcess) { + validatorProcess.kill("SIGINT"); + } + + await wait(3000); // 3 seconds +}); diff --git a/tests/v2-integration/counter/tests/counter.ts b/tests/v2-integration/counter/tests/counter.test.ts similarity index 81% rename from tests/v2-integration/counter/tests/counter.ts rename to tests/v2-integration/counter/tests/counter.test.ts index 600c2e52..0914e2ac 100644 --- a/tests/v2-integration/counter/tests/counter.ts +++ b/tests/v2-integration/counter/tests/counter.test.ts @@ -9,6 +9,8 @@ describe("counter", () => { const program = anchor.workspace.counter as Program; it("Is initialized!", async () => { + console.log("programId: ", program.programId); + console.log("env: ", program.provider.connection.rpcEndpoint); // Add your test here. const tx = await program.methods.initialize().rpc(); console.log("Your transaction signature", tx); diff --git a/tests/v2-integration/counter/utils.ts b/tests/v2-integration/counter/utils.ts new file mode 100644 index 00000000..1c33ec6e --- /dev/null +++ b/tests/v2-integration/counter/utils.ts @@ -0,0 +1,36 @@ +import { readFileSync } from "fs"; +import { Keypair, PublicKey } from "@solana/web3.js"; +import path from "path"; +import util from "node:util"; + +export function keypairFromFile(path: string): Keypair { + return Keypair.fromSecretKey( + Uint8Array.from(JSON.parse(readFileSync(path, "utf-8"))) + ); +} + +export const PAYER_FILE = path.resolve("./secrets/admin.json"); + +export const PAYER = keypairFromFile(PAYER_FILE); + +export const DLP_PROGRAM_ID = new PublicKey( + "DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh" +); + +export const COUNTER_PROGRAM_ID = new PublicKey( + "8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW" +); + +// every value is in seconds +export const MINUTE = 60; +export const HOUR = 60 * MINUTE; +export const DAY = 24 * HOUR; + +export function wait(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +// returns epoch seconds. +export function now_since_epoch(): bigint { + return BigInt(Math.floor(Date.now() / 1000)); +} diff --git a/tests/v2-integration/counter/vitest.config.ts b/tests/v2-integration/counter/vitest.config.ts new file mode 100644 index 00000000..8daf58f3 --- /dev/null +++ b/tests/v2-integration/counter/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + environment: "node", + testTimeout: 60_000, + setupFiles: ["./setup.ts"], + teardownTimeout: 20000, + isolate: true, + fileParallelism: false, + maxConcurrency: 1, + }, +}); diff --git a/tests/v2-integration/counter/yarn.lock b/tests/v2-integration/counter/yarn.lock index df7c18ce..84e662a9 100644 --- a/tests/v2-integration/counter/yarn.lock +++ b/tests/v2-integration/counter/yarn.lock @@ -4,18 +4,18 @@ "@babel/runtime@^7.25.0": version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz" integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== "@coral-xyz/anchor-errors@^0.31.1": version "0.31.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.31.1.tgz#d635cbac2533973ae6bfb5d3ba1de89ce5aece2d" + resolved "https://registry.npmjs.org/@coral-xyz/anchor-errors/-/anchor-errors-0.31.1.tgz" integrity sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ== -"@coral-xyz/anchor@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.31.1.tgz#0fdeebf45a3cb2e47e8ebbb815ca98542152962c" - integrity sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA== +"@coral-xyz/anchor@0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.32.1.tgz#a07440d9d267840f4f99f1493bd8ce7d7f128e57" + integrity sha512-zAyxFtfeje2FbMA1wzgcdVs7Hng/MijPKpRijoySPCicnvcTQs/+dnPZ/cR+LcXM9v9UYSyW81uRNYZtN5G4yg== dependencies: "@coral-xyz/anchor-errors" "^0.31.1" "@coral-xyz/borsh" "^0.31.1" @@ -33,41 +33,301 @@ "@coral-xyz/borsh@^0.31.1": version "0.31.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.31.1.tgz#5328e1e0921b75d7f4a62dd3f61885a938bc7241" + resolved "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.31.1.tgz" integrity sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw== dependencies: bn.js "^5.1.2" buffer-layout "^1.2.0" +"@esbuild/aix-ppc64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz#815b39267f9bffd3407ea6c376ac32946e24f8d2" + integrity sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg== + +"@esbuild/android-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz#19b882408829ad8e12b10aff2840711b2da361e8" + integrity sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg== + +"@esbuild/android-arm@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.3.tgz#90be58de27915efa27b767fcbdb37a4470627d7b" + integrity sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA== + +"@esbuild/android-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.3.tgz#d7dcc976f16e01a9aaa2f9b938fbec7389f895ac" + integrity sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ== + +"@esbuild/darwin-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz" + integrity sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg== + +"@esbuild/darwin-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz#ac61d645faa37fd650340f1866b0812e1fb14d6a" + integrity sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg== + +"@esbuild/freebsd-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz#b8625689d73cf1830fe58c39051acdc12474ea1b" + integrity sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w== + +"@esbuild/freebsd-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz#07be7dd3c9d42fe0eccd2ab9f9ded780bc53bead" + integrity sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA== + +"@esbuild/linux-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz#bf31918fe5c798586460d2b3d6c46ed2c01ca0b6" + integrity sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg== + +"@esbuild/linux-arm@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz#28493ee46abec1dc3f500223cd9f8d2df08f9d11" + integrity sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw== + +"@esbuild/linux-ia32@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz#750752a8b30b43647402561eea764d0a41d0ee29" + integrity sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg== + +"@esbuild/linux-loong64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz#a5a92813a04e71198c50f05adfaf18fc1e95b9ed" + integrity sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA== + +"@esbuild/linux-mips64el@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz#deb45d7fd2d2161eadf1fbc593637ed766d50bb1" + integrity sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw== + +"@esbuild/linux-ppc64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz#6f39ae0b8c4d3d2d61a65b26df79f6e12a1c3d78" + integrity sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA== + +"@esbuild/linux-riscv64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz#4c5c19c3916612ec8e3915187030b9df0b955c1d" + integrity sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ== + +"@esbuild/linux-s390x@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz#9ed17b3198fa08ad5ccaa9e74f6c0aff7ad0156d" + integrity sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw== + +"@esbuild/linux-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz#12383dcbf71b7cf6513e58b4b08d95a710bf52a5" + integrity sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA== + +"@esbuild/netbsd-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz#dd0cb2fa543205fcd931df44f4786bfcce6df7d7" + integrity sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA== + +"@esbuild/netbsd-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz#028ad1807a8e03e155153b2d025b506c3787354b" + integrity sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA== + +"@esbuild/openbsd-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz#e3c16ff3490c9b59b969fffca87f350ffc0e2af5" + integrity sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw== + +"@esbuild/openbsd-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz#c5a4693fcb03d1cbecbf8b422422468dfc0d2a8b" + integrity sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ== + +"@esbuild/openharmony-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz#082082444f12db564a0775a41e1991c0e125055e" + integrity sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g== + +"@esbuild/sunos-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz#5ab036c53f929e8405c4e96e865a424160a1b537" + integrity sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA== + +"@esbuild/win32-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz#38de700ef4b960a0045370c171794526e589862e" + integrity sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA== + +"@esbuild/win32-ia32@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz#451b93dc03ec5d4f38619e6cd64d9f9eff06f55c" + integrity sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q== + +"@esbuild/win32-x64@0.27.3": + version "0.27.3" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz#0eaf705c941a218a43dba8e09f1df1d6cd2f1f17" + integrity sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA== + +"@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@noble/curves@^1.4.2": version "1.9.7" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== dependencies: "@noble/hashes" "1.8.0" "@noble/hashes@1.8.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.8.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== +"@rollup/rollup-android-arm-eabi@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz#add5e608d4e7be55bc3ca3d962490b8b1890e088" + integrity sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg== + +"@rollup/rollup-android-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz#10bd0382b73592beee6e9800a69401a29da625c4" + integrity sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w== + +"@rollup/rollup-darwin-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz" + integrity sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg== + +"@rollup/rollup-darwin-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz#69e741aeb2839d2e8f0da2ce7a33d8bd23632423" + integrity sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w== + +"@rollup/rollup-freebsd-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz#3736c232a999c7bef7131355d83ebdf9651a0839" + integrity sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug== + +"@rollup/rollup-freebsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz#227dcb8f466684070169942bd3998901c9bfc065" + integrity sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz#ba004b30df31b724f99ce66e7128248bea17cb0c" + integrity sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw== + +"@rollup/rollup-linux-arm-musleabihf@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz#6929f3e07be6b6da5991f63c6b68b3e473d0a65a" + integrity sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw== + +"@rollup/rollup-linux-arm64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz#06e89fd4a25d21fe5575d60b6f913c0e65297bfa" + integrity sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g== + +"@rollup/rollup-linux-arm64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz#fddabf395b90990d5194038e6cd8c00156ed8ac0" + integrity sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q== + +"@rollup/rollup-linux-loong64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz#04c10bb764bbf09a3c1bd90432e92f58d6603c36" + integrity sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA== + +"@rollup/rollup-linux-loong64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz#f2450361790de80581d8687ea19142d8a4de5c0f" + integrity sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw== + +"@rollup/rollup-linux-ppc64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz#0474f4667259e407eee1a6d38e29041b708f6a30" + integrity sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w== + +"@rollup/rollup-linux-ppc64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz#9f32074819eeb1ddbe51f50ea9dcd61a6745ec33" + integrity sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw== + +"@rollup/rollup-linux-riscv64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz#3fdb9d4b1e29fb6b6a6da9f15654d42eb77b99b2" + integrity sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A== + +"@rollup/rollup-linux-riscv64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz#1de780d64e6be0e3e8762035c22e0d8ea68df8ed" + integrity sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw== + +"@rollup/rollup-linux-s390x-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz#1da022ffd2d9e9f0fd8344ea49e113001fbcac64" + integrity sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg== + +"@rollup/rollup-linux-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz#78c16eef9520bd10e1ea7a112593bb58e2842622" + integrity sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg== + +"@rollup/rollup-linux-x64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz#a7598591b4d9af96cb3167b50a5bf1e02dfea06c" + integrity sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw== + +"@rollup/rollup-openbsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz#c51d48c07cd6c466560e5bed934aec688ce02614" + integrity sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw== + +"@rollup/rollup-openharmony-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz#f09921d0b2a0b60afbf3586d2a7a7f208ba6df17" + integrity sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ== + +"@rollup/rollup-win32-arm64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz#08d491717135376e4a99529821c94ecd433d5b36" + integrity sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ== + +"@rollup/rollup-win32-ia32-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz#b0c12aac1104a8b8f26a5e0098e5facbb3e3964a" + integrity sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew== + +"@rollup/rollup-win32-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz#b9cccef26f5e6fdc013bf3c0911a3c77428509d0" + integrity sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ== + +"@rollup/rollup-win32-x64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz#a03348e7b559c792b6277cc58874b89ef46e1e72" + integrity sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA== + "@solana/buffer-layout@^4.0.1": version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + resolved "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz" integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== dependencies: buffer "~6.0.3" "@solana/codecs-core@2.3.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.3.0.tgz#6bf2bb565cb1ae880f8018635c92f751465d8695" + resolved "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz" integrity sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw== dependencies: "@solana/errors" "2.3.0" "@solana/codecs-numbers@^2.1.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz#ac7e7f38aaf7fcd22ce2061fbdcd625e73828dc6" + resolved "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz" integrity sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg== dependencies: "@solana/codecs-core" "2.3.0" @@ -75,7 +335,7 @@ "@solana/errors@2.3.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.3.0.tgz#4ac9380343dbeffb9dffbcb77c28d0e457c5fa31" + resolved "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz" integrity sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ== dependencies: chalk "^5.4.1" @@ -83,7 +343,7 @@ "@solana/web3.js@^1.69.0": version "1.98.4" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.4.tgz#df51d78be9d865181ec5138b4e699d48e6895bbe" + resolved "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz" integrity sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw== dependencies: "@babel/runtime" "^7.25.0" @@ -102,105 +362,186 @@ rpc-websockets "^9.0.2" superstruct "^2.0.2" +"@standard-schema/spec@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== + "@swc/helpers@^0.5.11": version "0.5.18" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.18.tgz#feeeabea0d10106ee25aaf900165df911ab6d3b1" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz" integrity sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== dependencies: tslib "^2.8.0" "@types/bn.js@^5.1.0": version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.2.0.tgz#4349b9710e98f9ab3cdc50f1c5e4dcbd8ef29c80" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz" integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== dependencies: "@types/node" "*" "@types/chai@^4.3.0": version "4.3.20" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz" integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== +"@types/chai@^5.2.2": + version "5.2.3" + resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== + dependencies: + "@types/deep-eql" "*" + assertion-error "^2.0.1" + "@types/connect@^3.4.33": version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + +"@types/estree@1.0.8", "@types/estree@^1.0.0": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mocha@^9.0.0": version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== "@types/node@*": version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.3.tgz#9c18245be768bdb4ce631566c7da303a5c99a7f8" + resolved "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz" integrity sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ== dependencies: undici-types "~7.16.0" "@types/node@^12.12.54": version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/uuid@^8.3.4": version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/ws@^7.4.4": version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + resolved "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz" integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== dependencies: "@types/node" "*" "@types/ws@^8.2.2": version "8.18.1" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz" integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== dependencies: "@types/node" "*" "@ungap/promise-all-settled@1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@vitest/expect@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz" + integrity sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ== + dependencies: + "@standard-schema/spec" "^1.0.0" + "@types/chai" "^5.2.2" + "@vitest/spy" "4.0.18" + "@vitest/utils" "4.0.18" + chai "^6.2.1" + tinyrainbow "^3.0.3" + +"@vitest/mocker@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz" + integrity sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ== + dependencies: + "@vitest/spy" "4.0.18" + estree-walker "^3.0.3" + magic-string "^0.30.21" + +"@vitest/pretty-format@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz" + integrity sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw== + dependencies: + tinyrainbow "^3.0.3" + +"@vitest/runner@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz" + integrity sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw== + dependencies: + "@vitest/utils" "4.0.18" + pathe "^2.0.3" + +"@vitest/snapshot@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz" + integrity sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA== + dependencies: + "@vitest/pretty-format" "4.0.18" + magic-string "^0.30.21" + pathe "^2.0.3" + +"@vitest/spy@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz" + integrity sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw== + +"@vitest/utils@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz" + integrity sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA== + dependencies: + "@vitest/pretty-format" "4.0.18" + tinyrainbow "^3.0.3" + agentkeepalive@^4.5.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== dependencies: humanize-ms "^1.2.1" ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -208,49 +549,54 @@ anymatch@~3.1.2: argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== arrify@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^3.0.2: version "3.0.11" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz" integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== dependencies: safe-buffer "^5.0.1" base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== binary-extensions@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz" integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== borsh@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + resolved "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz" integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== dependencies: bn.js "^5.2.0" @@ -259,7 +605,7 @@ borsh@^0.7.0: brace-expansion@^1.1.7: version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" @@ -267,36 +613,36 @@ brace-expansion@^1.1.7: braces@~3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-layout@^1.2.0, buffer-layout@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + resolved "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz" integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -304,19 +650,19 @@ buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: bufferutil@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.1.0.tgz#a4623541dd23867626bb08a051ec0d2ec0b70294" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz" integrity sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw== dependencies: node-gyp-build "^4.3.0" camelcase@^6.0.0, camelcase@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== chai@^4.3.4: version "4.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + resolved "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz" integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== dependencies: assertion-error "^1.1.0" @@ -327,9 +673,14 @@ chai@^4.3.4: pathval "^1.1.1" type-detect "^4.1.0" +chai@^6.2.1: + version "6.2.2" + resolved "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz" + integrity sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg== + chalk@^4.1.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -337,19 +688,19 @@ chalk@^4.1.0: chalk@^5.4.1: version "5.6.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz" integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== check-error@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: get-func-name "^2.0.2" chokidar@3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -364,7 +715,7 @@ chokidar@3.5.3: cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -373,129 +724,183 @@ cliui@^7.0.2: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== commander@^14.0.0: version "14.0.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.3.tgz#425d79b48f9af82fcd9e4fc1ea8af6c5ec07bbc2" + resolved "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz" integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== commander@^2.20.3: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== cross-fetch@^3.1.5: version "3.2.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz" integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== dependencies: node-fetch "^2.7.0" debug@4.3.3: version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== deep-eql@^4.1.3: version "4.1.4" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== dependencies: type-detect "^4.0.0" delay@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diff@^3.1.0: version "3.5.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.1.tgz#e7fae480379d2e944c68ff0f5e1c29b6e28c77ab" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.1.tgz" integrity sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +es-module-lexer@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + es6-promise@^4.0.3: version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== dependencies: es6-promise "^4.0.3" +esbuild@^0.27.0, esbuild@~0.27.0: + version "0.27.3" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz" + integrity sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.27.3" + "@esbuild/android-arm" "0.27.3" + "@esbuild/android-arm64" "0.27.3" + "@esbuild/android-x64" "0.27.3" + "@esbuild/darwin-arm64" "0.27.3" + "@esbuild/darwin-x64" "0.27.3" + "@esbuild/freebsd-arm64" "0.27.3" + "@esbuild/freebsd-x64" "0.27.3" + "@esbuild/linux-arm" "0.27.3" + "@esbuild/linux-arm64" "0.27.3" + "@esbuild/linux-ia32" "0.27.3" + "@esbuild/linux-loong64" "0.27.3" + "@esbuild/linux-mips64el" "0.27.3" + "@esbuild/linux-ppc64" "0.27.3" + "@esbuild/linux-riscv64" "0.27.3" + "@esbuild/linux-s390x" "0.27.3" + "@esbuild/linux-x64" "0.27.3" + "@esbuild/netbsd-arm64" "0.27.3" + "@esbuild/netbsd-x64" "0.27.3" + "@esbuild/openbsd-arm64" "0.27.3" + "@esbuild/openbsd-x64" "0.27.3" + "@esbuild/openharmony-arm64" "0.27.3" + "@esbuild/sunos-x64" "0.27.3" + "@esbuild/win32-arm64" "0.27.3" + "@esbuild/win32-ia32" "0.27.3" + "@esbuild/win32-x64" "0.27.3" + escalade@^3.1.1: version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + eventemitter3@^4.0.7: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== eventemitter3@^5.0.1: version "5.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz" integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== +expect-type@^1.2.2: + version "1.3.0" + resolved "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz" + integrity sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA== + eyes@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== fast-stable-stringify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + resolved "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz" integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + fill-range@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" find-up@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -503,39 +908,46 @@ find-up@5.0.0: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== +get-tsconfig@^4.7.5: + version "4.13.6" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz" + integrity sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw== + dependencies: + resolve-pkg-maps "^1.0.0" + glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob@7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -547,34 +959,34 @@ glob@7.2.0: growl@1.10.5: version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -582,61 +994,61 @@ inflight@^1.0.4: inherits@2: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isomorphic-ws@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== jayson@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.3.0.tgz#22eb8f3dcf37a5e893830e5451f32bde6d1bde4d" + resolved "https://registry.npmjs.org/jayson/-/jayson-4.3.0.tgz" integrity sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ== dependencies: "@types/connect" "^3.4.33" @@ -654,33 +1066,33 @@ jayson@^4.1.1: js-yaml@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" log-symbols@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -688,45 +1100,52 @@ log-symbols@4.1.0: loupe@^2.3.6: version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: get-func-name "^2.0.1" +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== minimatch@4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz" integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== dependencies: brace-expansion "^1.1.7" minimatch@^3.0.4: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mkdirp@^0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" mocha@^9.0.3: version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz" integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" @@ -756,109 +1175,182 @@ mocha@^9.0.3: ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.0.0: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + node-fetch@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-gyp-build@^4.3.0: version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz" integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +obug@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz" + integrity sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== + once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" pako@^2.0.3: version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + resolved "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== + pathval@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + prettier@^2.6.2: version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +rollup@^4.43.0: + version "4.57.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz" + integrity sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.57.1" + "@rollup/rollup-android-arm64" "4.57.1" + "@rollup/rollup-darwin-arm64" "4.57.1" + "@rollup/rollup-darwin-x64" "4.57.1" + "@rollup/rollup-freebsd-arm64" "4.57.1" + "@rollup/rollup-freebsd-x64" "4.57.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.57.1" + "@rollup/rollup-linux-arm-musleabihf" "4.57.1" + "@rollup/rollup-linux-arm64-gnu" "4.57.1" + "@rollup/rollup-linux-arm64-musl" "4.57.1" + "@rollup/rollup-linux-loong64-gnu" "4.57.1" + "@rollup/rollup-linux-loong64-musl" "4.57.1" + "@rollup/rollup-linux-ppc64-gnu" "4.57.1" + "@rollup/rollup-linux-ppc64-musl" "4.57.1" + "@rollup/rollup-linux-riscv64-gnu" "4.57.1" + "@rollup/rollup-linux-riscv64-musl" "4.57.1" + "@rollup/rollup-linux-s390x-gnu" "4.57.1" + "@rollup/rollup-linux-x64-gnu" "4.57.1" + "@rollup/rollup-linux-x64-musl" "4.57.1" + "@rollup/rollup-openbsd-x64" "4.57.1" + "@rollup/rollup-openharmony-arm64" "4.57.1" + "@rollup/rollup-win32-arm64-msvc" "4.57.1" + "@rollup/rollup-win32-ia32-msvc" "4.57.1" + "@rollup/rollup-win32-x64-gnu" "4.57.1" + "@rollup/rollup-win32-x64-msvc" "4.57.1" + fsevents "~2.3.2" + rpc-websockets@^9.0.2: version "9.3.3" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.3.tgz#b6be8b217f2a19bbc5fc184ef492e992b524556b" + resolved "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.3.3.tgz" integrity sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA== dependencies: "@swc/helpers" "^0.5.11" @@ -874,19 +1366,29 @@ rpc-websockets@^9.0.2: safe-buffer@^5.0.1, safe-buffer@^5.1.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@^0.5.6: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -894,24 +1396,34 @@ source-map-support@^0.5.6: source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + +std-env@^3.10.0: + version "3.10.0" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz" + integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== + stream-chain@^2.2.5: version "2.2.5" - resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + resolved "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz" integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== stream-json@^1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" + resolved "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz" integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== dependencies: stream-chain "^2.2.5" string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -920,70 +1432,93 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-json-comments@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== superstruct@^0.15.4: version "0.15.5" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + resolved "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz" integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== superstruct@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + resolved "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz" integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== supports-color@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" text-encoding-utf-8@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + resolved "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz" integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== + +tinyexec@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz" + integrity sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== + +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +tinyrainbow@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz" + integrity sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== + to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toml@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-mocha@^10.0.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.1.0.tgz#17a1c055f5f7733fd82447c4420740db87221bc8" + resolved "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.1.0.tgz" integrity sha512-T0C0Xm3/WqCuF2tpa0GNGESTBoKZaiqdUP8guNv4ZY316AFXlyidnrzQ1LUrCT0Wb1i3J0zFTgOh/55Un44WdA== dependencies: ts-node "7.0.1" @@ -992,7 +1527,7 @@ ts-mocha@^10.0.0: ts-node@7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz" integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== dependencies: arrify "^1.0.0" @@ -1006,7 +1541,7 @@ ts-node@7.0.1: tsconfig-paths@^3.5.0: version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" @@ -1016,44 +1551,94 @@ tsconfig-paths@^3.5.0: tslib@^2.8.0: version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== +tsx@^4.21.0: + version "4.21.0" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz" + integrity sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw== + dependencies: + esbuild "~0.27.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + type-detect@^4.0.0, type-detect@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz" integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== typescript@^5.7.3: version "5.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== undici-types@~7.16.0: version "7.16.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== utf-8-validate@^5.0.2: version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz" integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +"vite@^6.0.0 || ^7.0.0": + version "7.3.1" + resolved "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz" + integrity sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== + dependencies: + esbuild "^0.27.0" + fdir "^6.5.0" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.43.0" + tinyglobby "^0.2.15" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^4.0.18: + version "4.0.18" + resolved "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz" + integrity sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ== + dependencies: + "@vitest/expect" "4.0.18" + "@vitest/mocker" "4.0.18" + "@vitest/pretty-format" "4.0.18" + "@vitest/runner" "4.0.18" + "@vitest/snapshot" "4.0.18" + "@vitest/spy" "4.0.18" + "@vitest/utils" "4.0.18" + es-module-lexer "^1.7.0" + expect-type "^1.2.2" + magic-string "^0.30.21" + obug "^2.1.1" + pathe "^2.0.3" + picomatch "^4.0.3" + std-env "^3.10.0" + tinybench "^2.9.0" + tinyexec "^1.0.2" + tinyglobby "^0.2.15" + tinyrainbow "^3.0.3" + vite "^6.0.0 || ^7.0.0" + why-is-node-running "^2.3.0" + webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -1061,19 +1646,27 @@ whatwg-url@^5.0.0: which@2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + workerpool@6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -1082,37 +1675,37 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@^7.5.10: version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.5.0: version "8.19.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + resolved "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz" integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -1122,7 +1715,7 @@ yargs-unparser@2.0.0: yargs@16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -1135,10 +1728,10 @@ yargs@16.2.0: yn@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + resolved "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz" integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 2695b79aa4088221bd78a30da455f51b2565ea39 Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Sat, 14 Feb 2026 23:40:46 +0800 Subject: [PATCH 6/7] impl inline commits --- src/instruction_builder/v2_commit_finalize.rs | 25 +++- src/lib.rs | 2 +- src/v2/instruction.rs | 3 + src/v2/processor/commit_finalize_inline.rs | 50 ++++++- .../commit_finalize_inline_from_buffer.rs | 44 ++++++ .../commit_finalize_inline_resize.rs | 64 +++++++++ ...mmit_finalize_inline_resize_from_buffer.rs | 45 +++++++ .../commit_finalize_inline_internal.rs | 125 ++++++++++++++++++ src/v2/processor/internal/mod.rs | 2 + src/v2/processor/mod.rs | 6 + 10 files changed, 355 insertions(+), 11 deletions(-) create mode 100644 src/v2/processor/commit_finalize_inline_from_buffer.rs create mode 100644 src/v2/processor/commit_finalize_inline_resize.rs create mode 100644 src/v2/processor/commit_finalize_inline_resize_from_buffer.rs create mode 100644 src/v2/processor/internal/commit_finalize_inline_internal.rs diff --git a/src/instruction_builder/v2_commit_finalize.rs b/src/instruction_builder/v2_commit_finalize.rs index 534db5f6..474a80db 100644 --- a/src/instruction_builder/v2_commit_finalize.rs +++ b/src/instruction_builder/v2_commit_finalize.rs @@ -21,7 +21,6 @@ pub fn v2_commit_finalize( args: &mut CommitFinalizeArgs, state_or_diff: &[u8], ) -> Instruction { - println!("v2_commit_finalize"); let delegation_state = Pubkey::find_program_address( &[DelegationStateHeader::SEED, delegated_account.as_ref()], &crate::id(), @@ -58,13 +57,11 @@ pub fn v2_commit_finalize_inline( args: &mut CommitFinalizeArgs, state_or_diff: &[u8], ) -> Instruction { - println!("v2_commit_finalize_ugly"); Instruction { program_id: crate::id(), accounts: vec![ AccountMeta::new_readonly(validator, true), AccountMeta::new(delegated_account, false), - // AccountMeta::new_readonly(system_program::id(), false), ], data: [ DlpInstruction::CommitFinalizeInline.to_vec(), @@ -75,6 +72,28 @@ pub fn v2_commit_finalize_inline( } } +pub fn v2_commit_finalize_inline_resize( + validator: Pubkey, + delegated_account: Pubkey, + args: &mut CommitFinalizeArgs, + state_or_diff: &[u8], +) -> Instruction { + Instruction { + program_id: crate::id(), + accounts: vec![ + AccountMeta::new_readonly(validator, true), + AccountMeta::new(delegated_account, false), + // AccountMeta::new_readonly(system_program::id(), false), // 15 CU + ], + data: [ + DlpInstruction::CommitFinalizeInlineResize.to_vec(), + args.to_bytes(), + state_or_diff.to_vec(), + ] + .concat(), + } +} + /// /// Returns accounts-data-size budget for commit_finalize instruction. /// diff --git a/src/lib.rs b/src/lib.rs index 301a79d2..84262027 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -124,7 +124,7 @@ pub fn fast_process_instruction( // 23 CU -- till here - if true { + if false { if likely( unsafe { *ixdata } == v2::DlpInstruction::CommitFinalizeInline as u8, diff --git a/src/v2/instruction.rs b/src/v2/instruction.rs index 24225f38..b81139e2 100644 --- a/src/v2/instruction.rs +++ b/src/v2/instruction.rs @@ -124,6 +124,9 @@ pub const IX_TABLE: [Processor; 256] = { table[CommitFinalizeInline.index()] = |accounts, data| { process_commit_finalize_inline(accounts, data.as_ptr(), data.len()) }; + table[CommitFinalizeInlineResize.index()] = |accounts, data| { + process_commit_finalize_inline_resize(accounts, data.as_ptr(), data.len()) + }; table }; diff --git a/src/v2/processor/commit_finalize_inline.rs b/src/v2/processor/commit_finalize_inline.rs index 9f6eeb57..eec232a2 100644 --- a/src/v2/processor/commit_finalize_inline.rs +++ b/src/v2/processor/commit_finalize_inline.rs @@ -1,15 +1,54 @@ +use std::ops::Deref; + use pinocchio::{error::ProgramError, AccountView, Address, ProgramResult}; use crate::{ error::DlpError, pod_view::PodView, v2::{ - CommitFinalizeArgsWithBuffer, DelegationStateHeader, DelegationStateMut, + processor::internal::process_commit_finalize_inline_internal, + CommitFinalizeArgsWithBuffer, DelegationStateHeader, + DelegationStateMut, }, v2_require, v2_require_eq, v2_require_eq_keys, v2_require_ge, v2_require_signer, }; +#[inline(always)] +pub fn process_commit_finalize_inline( + accounts: &[AccountView], + //data: &[u8], + ixdata: *const u8, + ixdatalen: usize, +) -> ProgramResult { + // let [ + // validator, // force multi-line + // delegated_account, + // ] = crate::v2_require_n_accounts!(accounts, 2); + + let validator = unsafe { accounts.get_unchecked(0) }; + let delegated_account = unsafe { accounts.get_unchecked(1) }; + + //let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?; + let args = CommitFinalizeArgsWithBuffer::from_bytes_ptr(ixdata, ixdatalen)?; + + if args.data_is_diff.is_true() { + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args.deref(), + args.buffer, + ) + } else { + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args.deref(), + args.buffer, + ) + } +} + /// Commit a new state, or a diff, directly to the delegated account. Unlike, CommitState and /// CommitDiff variants, this instruction does not write to any temporary account first. In other /// words, this instruction commits and finalizes both. @@ -30,17 +69,14 @@ use crate::{ const VALIDATOR: Address = pinocchio::address::address!("tEsT3eV6RFCWs1BZ7AXTzasHqTtMnMLCB2tjQ42TDXD"); -#[inline(always)] -pub fn process_commit_finalize_inline( +#[allow(dead_code)] +//#[inline(always)] +pub fn process_commit_finalize_inline_101_cu( accounts: &[AccountView], //data: &[u8], ixdata: *const u8, ixdatalen: usize, ) -> ProgramResult { - //if data.len() != 0 { - // return Ok(()); - //} - //let [ // validator, // force multi-line // delegated_account, diff --git a/src/v2/processor/commit_finalize_inline_from_buffer.rs b/src/v2/processor/commit_finalize_inline_from_buffer.rs new file mode 100644 index 00000000..2abab392 --- /dev/null +++ b/src/v2/processor/commit_finalize_inline_from_buffer.rs @@ -0,0 +1,44 @@ +use pinocchio::{AccountView, ProgramResult}; + +use crate::{ + pod_view::PodView, + v2::{ + processor::internal::process_commit_finalize_inline_internal, + CommitFinalizeArgs, + }, +}; + +#[inline(always)] +pub fn process_commit_finalize_inline_from_buffer( + accounts: &[AccountView], + data: &[u8], +) -> ProgramResult { + // let [ + // validator, // force multi-line + // delegated_account, + // ] = crate::v2_require_n_accounts!(accounts, 2); + + let validator = unsafe { accounts.get_unchecked(0) }; + let delegated_account = unsafe { accounts.get_unchecked(1) }; + let buffer_account = unsafe { accounts.get_unchecked(2) }; + + let args = CommitFinalizeArgs::try_view_from(data)?; + + let state_or_diff = unsafe { buffer_account.borrow_unchecked() }; + + if args.data_is_diff.is_true() { + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args, + state_or_diff, + ) + } else { + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args, + state_or_diff, + ) + } +} diff --git a/src/v2/processor/commit_finalize_inline_resize.rs b/src/v2/processor/commit_finalize_inline_resize.rs new file mode 100644 index 00000000..710455ab --- /dev/null +++ b/src/v2/processor/commit_finalize_inline_resize.rs @@ -0,0 +1,64 @@ +use std::ops::Deref; + +use pinocchio::{error::ProgramError, AccountView, ProgramResult}; + +use crate::{ + processor::fast::NewState, + v2::{ + processor::internal::{ + process_commit_finalize_inline_internal, + DELEGATION_STATE_INLINE_SIZE, + }, + CommitFinalizeArgsWithBuffer, + }, + DiffSet, +}; + +#[inline(always)] +pub fn process_commit_finalize_inline_resize( + accounts: &[AccountView], + //data: &[u8], + ixdata: *const u8, + ixdatalen: usize, +) -> ProgramResult { + // let [ + // validator, // force multi-line + // delegated_account, + // ] = crate::v2_require_n_accounts!(accounts, 2); + + //crate::v2_require_eq!(accounts.len(), 2, ProgramError::Immutable); + + let validator = unsafe { accounts.get_unchecked(0) }; + let delegated_account = unsafe { accounts.get_unchecked(1) }; + //let _system_program = unsafe { accounts.get_unchecked(2) }; + + //let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?; + let args = CommitFinalizeArgsWithBuffer::from_bytes_ptr(ixdata, ixdatalen)?; + + if args.data_is_diff.is_true() { + //let new_len = NewState::Diff(DiffSet::try_new(args.buffer)?).data_len(); + //delegated_account.resize(DELEGATION_STATE_INLINE_SIZE + new_len)?; + + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args.deref(), + args.buffer, + ) + } else { + // additional cost: 11 CU + { + let required_len = DELEGATION_STATE_INLINE_SIZE + args.buffer.len(); + if required_len != delegated_account.data_len() { + delegated_account.resize(required_len)?; + } + } + + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args.deref(), + args.buffer, + ) + } +} diff --git a/src/v2/processor/commit_finalize_inline_resize_from_buffer.rs b/src/v2/processor/commit_finalize_inline_resize_from_buffer.rs new file mode 100644 index 00000000..912889b7 --- /dev/null +++ b/src/v2/processor/commit_finalize_inline_resize_from_buffer.rs @@ -0,0 +1,45 @@ +use pinocchio::{AccountView, ProgramResult}; + +use crate::{ + pod_view::PodView, + v2::{ + processor::internal::process_commit_finalize_inline_internal, + CommitFinalizeArgs, + }, +}; + +#[inline(always)] +pub fn process_commit_finalize_inline_resize_from_buffer( + accounts: &[AccountView], + data: &[u8], +) -> ProgramResult { + // let [ + // validator, // force multi-line + // delegated_account, + // ] = crate::v2_require_n_accounts!(accounts, 2); + + let validator = unsafe { accounts.get_unchecked(0) }; + let delegated_account = unsafe { accounts.get_unchecked(1) }; + let buffer_account = unsafe { accounts.get_unchecked(2) }; + let _system_program = unsafe { accounts.get_unchecked(3) }; + + let args = CommitFinalizeArgs::try_view_from(data)?; + + let state_or_diff = unsafe { buffer_account.borrow_unchecked() }; + + if args.data_is_diff.is_true() { + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args, + state_or_diff, + ) + } else { + process_commit_finalize_inline_internal::( + validator, + delegated_account, + args, + state_or_diff, + ) + } +} diff --git a/src/v2/processor/internal/commit_finalize_inline_internal.rs b/src/v2/processor/internal/commit_finalize_inline_internal.rs new file mode 100644 index 00000000..4f60cd29 --- /dev/null +++ b/src/v2/processor/internal/commit_finalize_inline_internal.rs @@ -0,0 +1,125 @@ +use pinocchio::{error::ProgramError, AccountView, ProgramResult}; + +use crate::{ + error::DlpError, + pod_view::PodView, + v2::{CommitFinalizeArgs, DelegationStateHeader, DelegationStateMut}, + v2_require, v2_require_eq, v2_require_eq_keys, v2_require_ge, + v2_require_signer, +}; + +pub const DELEGATION_STATE_INLINE_SIZE: usize = + 4 + DelegationStateHeader::SPACE; + +#[inline(always)] +pub fn process_commit_finalize_inline_internal( + validator: &AccountView, + delegated_account: &AccountView, + args: &CommitFinalizeArgs, + state_or_diff: &[u8], +) -> ProgramResult { + v2_require_signer!(validator); + + let delegated_account_lamports = delegated_account.lamports(); + + let data = unsafe { delegated_account.borrow_unchecked_mut() }; + + let (state_size, data) = unsafe { data.split_at_mut_unchecked(4) }; + + let state_size = unsafe { *(state_size.as_ptr() as *const u32) }; + + let (state_data, delegated_account_data) = + unsafe { data.split_at_mut_unchecked(state_size as usize) }; + + let (header, _) = unsafe { + state_data.split_at_mut_unchecked(DelegationStateHeader::SPACE) + }; + + let mut state_view = DelegationStateMut::from_bytes(header)?; + + if DATA_IS_DIFF { + Ok(()) + } else { + if true { + v2_require_eq_keys!( + &state_view.bindings.validator_as_authority, + validator.address(), + DlpError::InvalidAuthority + ); + + v2_require_ge!( + delegated_account_lamports, + state_view.original_lamports, + DlpError::InvalidDelegatedState + ); + + v2_require_eq!( + args.commit_id, + state_view.last_commit_id + 1, + DlpError::NonceOutOfOrder + ); + + v2_require!( + state_view.is_undelegatable.is_false(), + DlpError::NonceOutOfOrder + ); + } else { + v2_require!( + // address_eq( + // &state_view.bindings.validator_as_authority, + // validator.address() + // ) + // && + delegated_account_lamports >= state_view.original_lamports + && args.commit_id == state_view.last_commit_id + 1 + && state_view.is_undelegatable.is_false(), + DlpError::InvalidAuthority + ); + } + + state_view.last_commit_id = args.commit_id; + state_view.is_undelegatable = args.allow_undelegation.into(); + + if false { + delegated_account_data.copy_from_slice(state_or_diff); + } else { + #[cfg(any(target_os = "solana", target_arch = "bpf"))] + unsafe { + //pinocchio::syscalls::sol_memcpy_( + solana_define_syscall::definitions::sol_memcpy_( + delegated_account_data.as_mut_ptr(), + state_or_diff.as_ptr(), + state_or_diff.len() as u64, + ); + } + + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] + unsafe { + if false { + let rem = state_or_diff.len() % 8; + let len = state_or_diff.len() / 8; + core::ptr::copy_nonoverlapping( + state_or_diff.as_ptr() as *const u64, + delegated_account_data.as_mut_ptr() as *mut u64, + len, + ); + if rem != 0 { + core::ptr::copy_nonoverlapping( + state_or_diff.as_ptr().add(len * 8), + delegated_account_data.as_mut_ptr().add(len * 8), + rem, + ); + } + } else { + core::ptr::copy_nonoverlapping( + state_or_diff.as_ptr(), + delegated_account_data.as_mut_ptr(), + state_or_diff.len(), + ); + } + } + } + + Ok(()) + } +} diff --git a/src/v2/processor/internal/mod.rs b/src/v2/processor/internal/mod.rs index 05762cc9..67adbde4 100644 --- a/src/v2/processor/internal/mod.rs +++ b/src/v2/processor/internal/mod.rs @@ -1,5 +1,7 @@ +mod commit_finalize_inline_internal; mod commit_finalize_internal; mod delegate_internal; +pub(crate) use commit_finalize_inline_internal::*; pub(crate) use commit_finalize_internal::*; pub(crate) use delegate_internal::*; diff --git a/src/v2/processor/mod.rs b/src/v2/processor/mod.rs index 56f58121..8df8d9cb 100644 --- a/src/v2/processor/mod.rs +++ b/src/v2/processor/mod.rs @@ -1,10 +1,16 @@ mod commit_finalize; mod commit_finalize_from_buffer; mod commit_finalize_inline; +mod commit_finalize_inline_from_buffer; +mod commit_finalize_inline_resize; +mod commit_finalize_inline_resize_from_buffer; mod delegate; mod internal; pub use commit_finalize::*; pub use commit_finalize_from_buffer::*; pub use commit_finalize_inline::*; +pub use commit_finalize_inline_from_buffer::*; +pub use commit_finalize_inline_resize::*; +pub use commit_finalize_inline_resize_from_buffer::*; pub use delegate::*; From f3f89f00d24d7f005421b3d33e23f0ddad9d305d Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Sun, 15 Feb 2026 23:26:44 +0530 Subject: [PATCH 7/7] continue vitest --- src/v2/instruction.rs | 2 + .../test_v2_commit_finalize_inline_resize.rs | 193 ++++++++++++++++++ tests/v2-integration/counter/Makefile | 6 +- tests/v2-integration/counter/package.json | 1 + .../counter/programs/counter/src/lib.rs | 29 ++- .../scripts/accounts/luzid-authority.json | 14 ++ .../counter/scripts/accounts/memo_v1.json | 14 ++ .../counter/scripts/accounts/memo_v2.json | 14 ++ .../non-delegated-cloneable-account1.json | 14 ++ .../non-delegated-cloneable-account2.json | 14 ++ .../non-delegated-cloneable-account3.json | 14 ++ .../non-delegated-cloneable-account4.json | 14 ++ .../scripts/accounts/old_program_v1.json | 14 ++ .../scripts/accounts/protocol-fees-vault.json | 14 ++ .../scripts/accounts/validator-authority.json | 14 ++ .../accounts/validator-fees-vault.json | 14 ++ .../counter/scripts/run-magicblock | 2 +- .../counter/scripts/run-validator | 25 ++- .../counter/tests/counter.test.ts | 39 +++- tests/v2-integration/counter/utils.ts | 4 + 20 files changed, 424 insertions(+), 31 deletions(-) create mode 100644 tests/test_v2_commit_finalize_inline_resize.rs create mode 100644 tests/v2-integration/counter/scripts/accounts/luzid-authority.json create mode 100644 tests/v2-integration/counter/scripts/accounts/memo_v1.json create mode 100644 tests/v2-integration/counter/scripts/accounts/memo_v2.json create mode 100644 tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account1.json create mode 100644 tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account2.json create mode 100644 tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account3.json create mode 100644 tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account4.json create mode 100644 tests/v2-integration/counter/scripts/accounts/old_program_v1.json create mode 100644 tests/v2-integration/counter/scripts/accounts/protocol-fees-vault.json create mode 100644 tests/v2-integration/counter/scripts/accounts/validator-authority.json create mode 100644 tests/v2-integration/counter/scripts/accounts/validator-fees-vault.json diff --git a/src/v2/instruction.rs b/src/v2/instruction.rs index b81139e2..4146589e 100644 --- a/src/v2/instruction.rs +++ b/src/v2/instruction.rs @@ -13,6 +13,8 @@ pub enum DlpInstruction { /// Delegate = 101, DelegateWithAnyValidator = 102, + DelegateInline = 103, + DelegateInline32 = 104, /// /// Commit group: [111, 140] => 30 slots diff --git a/tests/test_v2_commit_finalize_inline_resize.rs b/tests/test_v2_commit_finalize_inline_resize.rs new file mode 100644 index 00000000..c01027f6 --- /dev/null +++ b/tests/test_v2_commit_finalize_inline_resize.rs @@ -0,0 +1,193 @@ +use std::ptr::read_unaligned; + +use dlp::{ + pda::validator_fees_vault_pda_from_validator, + pod_view::PodView, + v2::{ + CommitFinalizeArgs, DelegationStateHeader, ValidatedDelegationBindings, + }, +}; +use solana_program::{ + hash::Hash, native_token::LAMPORTS_PER_SOL, rent::Rent, system_program, +}; +use solana_program_test::{ + BanksClient, BanksTransactionResultWithMetadata, ProgramTest, +}; +use solana_sdk::{ + account::Account, + compute_budget::ComputeBudgetInstruction, + signature::{Keypair, Signer}, + transaction::Transaction, +}; + +use crate::fixtures::{ + DEFAULT_COMMIT_FREQUENCY_MS, DEFAULT_DELEGATION_SLOT, DELEGATED_PDA_ID, + DELEGATED_PDA_OWNER_ID, TEST_AUTHORITY, +}; + +mod fixtures; + +#[tokio::test] +async fn test_v2_commit_finalize_inline_resize_perf() { + // Setup + const KB: usize = 1024; + const ACCOUNT_SIZE: usize = 4 * KB; + + let (banks, _, authority, blockhash) = + setup_program_test_env(vec![0; ACCOUNT_SIZE]).await; + let new_state: Vec = vec![1; ACCOUNT_SIZE + 0 * KB]; + + let new_account_balance = 1_000_000; + + let ix = dlp::instruction_builder::v2_commit_finalize_inline_resize( + authority.pubkey(), + DELEGATED_PDA_ID, + &mut CommitFinalizeArgs { + commit_id: 1, + allow_undelegation: true.into(), + data_is_diff: false.into(), + lamports: new_account_balance, + reserved_padding: Default::default(), + }, + &new_state, + ); + let tx = Transaction::new_signed_with_payer( + &[ + ComputeBudgetInstruction::set_compute_unit_limit( + dlp::instruction_builder::MAX_CU_COMMIT_FINALIZE + 150, /* 150 for ComputeBudgetInstruction itself */ + ), + ix, + ], + Some(&authority.pubkey()), + &[&authority], + blockhash, + ); + + // execute CommitFinalize and validate CU performmace + { + let BanksTransactionResultWithMetadata { + result: _, + metadata, + } = banks.process_transaction_with_metadata(tx).await.unwrap(); + + let metadata = metadata.unwrap(); + + assertables::assert_lt!(metadata.compute_units_consumed, 1150); + + assert_eq!( + metadata + .log_messages + .iter() + .filter(|log| !log + .contains("ComputeBudget111111111111111111111111111111")) + .count(), + 3, + "CommitFinalize must not log anything in OK scenario" + ); + } + + let delegated_account = + banks.get_account(DELEGATED_PDA_ID).await.unwrap().unwrap(); + let state_size = unsafe { + read_unaligned(delegated_account.data.as_ptr() as *const u32) + } as usize; + assert_eq!( + delegated_account.data[4 + state_size..].len(), + new_state.len() + ); + assert_eq!(delegated_account.data[4 + state_size..], new_state); + + // let delegation_metadata_account = banks + // .get_account(pdas.delegation_metadata) + // .await + // .unwrap() + // .unwrap(); + + // let delegation_metadata = + // DelegationMetadata::try_from_bytes_with_discriminator( + // &delegation_metadata_account.data, + // ) + // .unwrap(); + + // assert_eq!(delegation_metadata.is_undelegatable, true); +} + +async fn setup_program_test_env( + pda_data: Vec, +) -> (BanksClient, Keypair, Keypair, Hash) { + let mut program_test = ProgramTest::new("dlp", dlp::ID, None); + program_test.prefer_bpf(true); + + let validator_keypair = Keypair::from_bytes(&TEST_AUTHORITY).unwrap(); + + program_test.add_account( + validator_keypair.pubkey(), + Account { + lamports: 10 * LAMPORTS_PER_SOL, + data: vec![], + owner: system_program::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let validator_fees_vault = + validator_fees_vault_pda_from_validator(&validator_keypair.pubkey()); + let state_header = DelegationStateHeader { + discriminator: DelegationStateHeader::DISCRIMINATOR, + original_owner: DELEGATED_PDA_OWNER_ID.to_bytes().into(), + delegation_slot: DEFAULT_DELEGATION_SLOT, + original_lamports: Rent::default().minimum_balance(500), + commit_frequency_ms: DEFAULT_COMMIT_FREQUENCY_MS, + bindings: ValidatedDelegationBindings { + delegated_account: DELEGATED_PDA_ID.to_bytes().into(), + validator_as_authority: validator_keypair + .pubkey() + .to_bytes() + .into(), + validator_fees_vault: validator_fees_vault.to_bytes().into(), + }, + last_commit_id: 0, + rent_payer: validator_keypair.pubkey().to_bytes().into(), + is_undelegatable: false.into(), + reserved_padding0: Default::default(), + }; + + // Setup a delegated PDA containing the delegation_state at the end + program_test.add_account( + DELEGATED_PDA_ID, + Account { + lamports: LAMPORTS_PER_SOL, + data: { + let state_buffer = vec![]; + let state = [state_header.to_bytes(), state_buffer].concat(); + let state_size = (state.len() as u32).to_le_bytes().to_vec(); + + [ + state_size, // size of the delegation state + state, // delegation state (appended by Delegate ix) + pda_data, // delegated pda + ] + .concat() + }, + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + // Setup the validator fees vault + program_test.add_account( + validator_fees_vault, + Account { + lamports: LAMPORTS_PER_SOL, + data: vec![], + owner: dlp::id(), + executable: false, + rent_epoch: 0, + }, + ); + + let (banks, payer, blockhash) = program_test.start().await; + (banks, payer, validator_keypair, blockhash) +} diff --git a/tests/v2-integration/counter/Makefile b/tests/v2-integration/counter/Makefile index 23407df1..c4f1568c 100644 --- a/tests/v2-integration/counter/Makefile +++ b/tests/v2-integration/counter/Makefile @@ -1,2 +1,6 @@ -all: + +build: + anchor build + +test: anchor test --skip-local-validator --skip-build --skip-deploy diff --git a/tests/v2-integration/counter/package.json b/tests/v2-integration/counter/package.json index 0a34671a..deba7191 100644 --- a/tests/v2-integration/counter/package.json +++ b/tests/v2-integration/counter/package.json @@ -1,6 +1,7 @@ { "license": "ISC", "scripts": { + "check": "tsc --noEmit", "test": "vitest --run", "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" diff --git a/tests/v2-integration/counter/programs/counter/src/lib.rs b/tests/v2-integration/counter/programs/counter/src/lib.rs index a0e14dfb..f9e0f2c2 100644 --- a/tests/v2-integration/counter/programs/counter/src/lib.rs +++ b/tests/v2-integration/counter/programs/counter/src/lib.rs @@ -13,12 +13,12 @@ pub mod counter { /// Create the PDA and initialize counter = 0 pub fn initialize(ctx: Context) -> Result<()> { + msg!("user: {}", ctx.accounts.user.key); let counter = &mut ctx.accounts.counter; counter.value = 0; Ok(()) } - /// Increment counter by 1 pub fn increment(ctx: Context) -> Result<()> { let counter = &mut ctx.accounts.counter; @@ -28,18 +28,21 @@ pub mod counter { Ok(()) } - /// (Optional) Reset to zero (useful in tests) - pub fn reset(ctx: Context) -> Result<()> { - let counter = &mut ctx.accounts.counter; - counter.value = 0; + pub fn delegate_counter(ctx: Context) -> Result<()> { + ctx.accounts + .delegate_pda( + &ctx.accounts.payer, + &[], + DelegateConfig { + commit_frequency_ms: 1000, + validator: None, //"mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev"), + }, + ) + .unwrap(); Ok(()) } } -/* ================================ - Accounts -================================ */ - #[derive(Accounts)] pub struct Initialize<'info> { #[account( @@ -78,10 +81,6 @@ pub struct Increment<'info> { pub user: Signer<'info>, } -/* ================================ - State -================================ */ - #[account] pub struct Counter { pub value: u64, @@ -91,10 +90,6 @@ impl Counter { pub const SIZE: usize = 8; // u64 } -/* ================================ - Errors -================================ */ - #[error_code] pub enum ErrorCode { #[msg("Counter overflow")] diff --git a/tests/v2-integration/counter/scripts/accounts/luzid-authority.json b/tests/v2-integration/counter/scripts/accounts/luzid-authority.json new file mode 100644 index 00000000..e9629818 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/luzid-authority.json @@ -0,0 +1,14 @@ +{ + "pubkey": "LUzidNSiPNjYNkxZcUm5hYHwnWPwsUfh2US1cpWwaBm", + "account": { + "lamports": 20000000000, + "data": [ + "", + "base64" + ], + "owner": "11111111111111111111111111111111", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 0 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/accounts/memo_v1.json b/tests/v2-integration/counter/scripts/accounts/memo_v1.json new file mode 100644 index 00000000..73d16303 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/memo_v1.json @@ -0,0 +1,14 @@ +{ + "pubkey": "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo", + "account": { + "lamports": 121159680, + "data": [ + "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IGlzIC9Vc2Vycy90eWVyYWV1bGJlcmcvRG9jdW1lbnRzL1NvbGFuYS9zb2xhbmEtcHJvZ3JhbS1saWJyYXJ5L2Jpbi9icGYtc2RrL2RlcGVuZGVuY2llcy9ydXN0LWJwZi1zeXNyb290L3NyYy9saWJjb3JlL3NsaWNlL21vZC5ycy9Vc2Vycy90eWVyYWV1bGJlcmcvRG9jdW1lbnRzL1NvbGFuYS9zb2xhbmEtcHJvZ3JhbS1saWJyYXJ5L2Jpbi9icGYtc2RrL2RlcGVuZGVuY2llcy9ydXN0LWJwZi1zeXNyb290L3NyYy9saWJhbGxvYy9yYXdfdmVjLnJzaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZUVycm9yOiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQsIG91dCBvZiBtZW1vcnkvVXNlcnMvdHllcmFldWxiZXJnL0RvY3VtZW50cy9Tb2xhbmEvc29sYW5hLXByb2dyYW0tbGlicmFyeS9iaW4vYnBmLXNkay9kZXBlbmRlbmNpZXMvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc2NhcGFjaXR5IG92ZXJmbG93MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgIC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", + "base64" + ], + "owner": "BPFLoader1111111111111111111111111111111111", + "executable": true, + "rentEpoch": 18446744073709551615, + "space": 17280 + } +} diff --git a/tests/v2-integration/counter/scripts/accounts/memo_v2.json b/tests/v2-integration/counter/scripts/accounts/memo_v2.json new file mode 100644 index 00000000..cc07b017 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/memo_v2.json @@ -0,0 +1,14 @@ +{ + "pubkey": "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", + "account": { + "lamports": 521498889, + "data": [ + "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cnMvdHllcmFldWxiZXJnLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2JzNTgtMC4zLjEvc3JjL2VuY29kZS5yczEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXr/////////////////////////////////////////////////////////////////AAECAwQFBgcI/////////wkKCwwNDg8Q/xESExQV/xYXGBkaGxwdHh8g////////ISIjJCUmJygpKiv/LC0uLzAxMjM0NTY3ODn//////2NhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVhbGlnbl9vZmZzZXQ6IGFsaWduIGlzIG5vdCBhIHBvd2VyLW9mLXR3by9Vc2Vycy90eWVyYWV1bGJlcmcvLmNhY2hlL3NvbGFuYS92MC4xMy9ydXN0LWJwZi1zeXNyb290L3NyYy9saWJjb3JlL3B0ci9tb2QucnNjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlX19Ob25FeGhhdXN0aXZlQnVmZmVyVG9vU21hbGxFcnJvcjogbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLCBvdXQgb2YgbWVtb3J5aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9Vc2Vycy90eWVyYWV1bGJlcmcvLmNhY2hlL3NvbGFuYS92MC4xMy9ydXN0LWJwZi1zeXNyb290L3NyYy9saWJhbGxvYy9yYXdfdmVjLnJzY2FwYWNpdHkgb3ZlcmZsb3dGcm9tVXRmOEVycm9yYnl0ZXNlcnJvcgAvVXNlcnMvdHllcmFldWxiZXJnLy5jYWNoZS9zb2xhbmEvdjAuMTMvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9mbXQvbW9kLnJzYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yL1VzZXJzL3R5ZXJhZXVsYmVyZy8uY2FjaGUvc29sYW5hL3YwLjEzL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzYXNzZXJ0aW9uIGZhaWxlZDogYChsZWZ0ID09IHJpZ2h0KWAKICBsZWZ0OiBgYCwKIHJpZ2h0OiBgYDogZGVzdGluYXRpb24gYW5kIHNvdXJjZSBzbGljZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3RoczB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkuLmNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvVXNlcnMvdHllcmFldWxiZXJnLy5jYWNoZS9zb2xhbmEvdjAuMTMvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9vcHRpb24ucnMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMEBAQEBAAAAAAAAAAAAAAAWy4uLl1ieXRlIGluZGV4ICBpcyBvdXQgb2YgYm91bmRzIG9mIGBgL1VzZXJzL3R5ZXJhZXVsYmVyZy8uY2FjaGUvc29sYW5hL3YwLjEzL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvc3RyL21vZC5yc2JlZ2luIDw9IGVuZCAoIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSApIG9mIGBVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlblBhbmlja2VkIGF0OiAnJywgOjogL1VzZXJzL3R5ZXJhZXVsYmVyZy8uY2FjaGUvc29sYW5hL3YwLjEzL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvcmVzdWx0LnJzL1VzZXJzL3R5ZXJhZXVsYmVyZy8uY2FjaGUvc29sYW5hL3YwLjEzL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgYWxpZ25fb2Zmc2V0OiBhbGlnbiBpcyBub3QgYSBwb3dlci1vZi10d28vVXNlcnMvdHllcmFldWxiZXJnLy5jYWNoZS9zb2xhbmEvdjAuMTMvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9wdHIvbW9kLnJzY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9Vc2Vycy90eWVyYWV1bGJlcmcvLmNhY2hlL3NvbGFuYS92MC4xMy9ydXN0LWJwZi1zeXNyb290L3NyYy9saWJjb3JlL29wdGlvbi5ycwAAAAAAAAAAAAAAAC9Vc2Vycy90eWVyYWV1bGJlcmcvLmNhY2hlL3NvbGFuYS92MC4xMy9ydXN0LWJwZi1zeXNyb290L3NyYy9saWJjb3JlL3VuaWNvZGUvYm9vbF90cmllLnJzAAEDBQUGBgMHBggICREKHAsZDBQNEg4NDwQQAxISEwkWARcFGAIZAxoHHAIdAR8WIAMrBCwCLQsuATADMQIyAacCqQKqBKsI+gL7Bf0E/gP/Ca14eYuNojBXWIuMkBwd3Q4PS0z7/C4vP1xdX7XihI2OkZKpsbq7xcbJyt7k5f8ABBESKTE0Nzo7PUlKXYSOkqmxtLq7xsrOz+TlAAQNDhESKTE0OjtFRklKXmRlhJGbncnOzw0RKUVJV2RljZGptLq7xcnf5OXwBA0RRUlkZYCBhLK8vr/V1/Dxg4WLpKa+v8XHzs/a20iYvc3Gzs9JTk9XWV5fiY6Psba3v8HGx9cRFhdbXPb3/v+ADW1x3t8ODx9ubxwd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AgICAgICAgI4AjkCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjo7PAICAgI9AgI+P0BBQkNERUYCAgJHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkgCAgICAgICAgICAkkCAgICAjsCAAECAgICAwICAgIEAgUGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC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WHcAAAAAAAAIAAAAAAAAAHB3AAAAAAAACAAAAAAAAAAw/wAAAAAAAAgAAAAAAAAAQP8AAAAAAAAIAAAAAAAAAFj/AAAAAAAACAAAAAAAAABo/wAAAAAAAAgAAAAAAAAAeP8AAAAAAAAIAAAAAAAAAIj/AAAAAAAACAAAAAAAAACg/wAAAAAAAAgAAAAAAAAAsP8AAAAAAAAIAAAAAAAAAMD/AAAAAAAACAAAAAAAAADQ/wAAAAAAAAgAAAAAAAAA4P8AAAAAAAAIAAAAAAAAAPj/AAAAAAAACAAAAAAAAAAIAAEAAAAAAAgAAAAAAAAAGAABAAAAAAAIAAAAAAAAACgAAQAAAAAACAAAAAAAAAA4AAEAAAAAAAgAAAAAAAAASAABAAAAAAAIAAAAAAAAAGAAAQAAAAAACAAAAAAAAAB4AAEAAAAAAAgAAAAAAAAAgAABAAAAAAAIAAAAAAAAAJgAAQAAAAAACAAAAAAAAABYeAAAAAAAAAgAAAAAAAAAoHgAAAAAAAAIAAAAAAAAAFB5AAAAAAAACAAAAAAAAACYeQAAAAAAAAgAAAAAAAAASHoAAAAAAAAIAAAAAAAAAJh6AAAAAAAACAAAAAAAAADgegAAAAAAAAgAAAAAAAAAYHsAAAAAAAAIAAAAAAAAAJh8AAAAAAAACAAAAAAAAADgfAAAAAAAAAgAAAAAAAAASH0AAAAAAAAIAAAAAAAAAJB9AAAAAAAACAAAAAAAAADgfQAAAAAAAAgAAAAAAAAAKH4AAAAAAAAIAAAAAAAAAJB+AAAAAAAACAAAAAAAAADYfgAAAAAAAAgAAAAAAAAAKH8AAAAAAAAIAAAAAAAAAHB/AAAAAAAACAAAAAAAAADYfwAAAAAAAAgAAAAAAAAAIIAAAAAAAAAIAAAAAAAAAKAAAQAAAAAACAAAAAAAAACwAAEAAAAAAAgAAAAAAAAAwAABAAAAAAAIAAAAAAAAANAAAQAAAAAACAAAAAAAAADgAAEAAAAAAAgAAAAAAAAA8AABAAAAAAAIAAAAAAAAAAABAQAAAAAACAAAAAAAAAAQAQEAAAAAAAgAAAAAAAAAKAEBAAAAAAAIAAAAAAAAADgBAQAAAAAACAAAAAAAAABIAQEAAAAAAAgAAAAAAAAAYAEBAAAAAAAIAAAAAAAAAHABAQAAAAAACAAAAAAAAACAAQEAAAAAAAgAAAAAAAAAcIIAAAAAAAAIAAAAAAAAAJiEAAAAAAAACAAAAAAAAADIhAAAAAAAAAgAAAAAAAAA4IQAAAAAAAAIAAAAAAAAABCFAAAAAAAACAAAAAAAAAAohQAAAAAAAAgAAAAAAAAA0IgAAAAAAAAIAAAAAAAAAJCJAAAAAAAACAAAAAAAAADQiQAAAAAAAAgAAAAAAAAA6IkAAAAAAAAIAAAAAAAAAACKAAAAAAAACAAAAAAAAABAigAAAAAAAAgAAAAAAAAAWIoAAAAAAAAIAAAAAAAAAMiLAAAAAAAACAAAAAAAAACYAQEAAAAAAAgAAAAAAAAAqAEBAAAAAAAIAAAAAAAAAMABAQAAAAAACAAAAAAAAADQAQEAAAAAAAgAAAAAAAAA6AEBAAAAAAAIAAAAAAAAAAACAQAAAAAACAAAAAAAAAAYAgEAAAAAAAgAAAAAAAAAMAIBAAAAAAAIAAAAAAAAAEgCAQAAAAAACAAAAAAAAABgAwEAAAAAAAgAAAAAAAAAcAMBAAAAAAAIAAAAAAAAAIADAQAAAAAACAAAAAAAAACQjgAAAAAAAAgAAAAAAAAA2JIAAAAAAAAIAAAAAAAAAPCSAAAAAAAACAAAAAAAAABokwAAAAAAAAgAAAAAAAAAqJMAAAAAAAAIAAAAAAAAAPCUAAAAAAAACAAAAAAAAABglQAAAAAAAAgAAAAAAAAA6JUAAAAAAAAIAAAAAAAAAAiWAAAAAAAACAAAAAAAAAAwlwAAAAAAAAgAAAAAAAAASJcAAAAAAAAIAAAAAAAAAOCXAAAAAAAACAAAAAAAAADImAAAAAAAAAgAAAAAAAAAoJkAAAAAAAAIAAAAAAAAAOCZAAAAAAAACAAAAAAAAAComgAAAAAAAAgAAAAAAAAAKJsAAAAAAAAIAAAAAAAAAAicAAAAAAAACAAAAAAAAACInAAAAAAAAAgAAAAAAAAAEJ0AAAAAAAAIAAAAAAAAAMCfAAAAAAAACAAAAAAAAADQoAAAAAAAAAgAAAAAAAAAcAgBAAAAAAAIAAAAAAAAAIgIAQAAAAAACAAAAAAAAACQCAEAAAAAAAgAAAAAAAAAmAgBAAAAAAAIAAAAAAAAABCqAAAAAAAACAAAAAAAAACIqgAAAAAAAAgAAAAAAAAASKsAAAAAAAAIAAAAAAAAAMCrAAAAAAAA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", + "base64" + ], + "owner": "BPFLoader2111111111111111111111111111111111", + "executable": true, + "rentEpoch": 18446744073709551615, + "space": 74800 + } +} diff --git a/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account1.json b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account1.json new file mode 100644 index 00000000..2609702e --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account1.json @@ -0,0 +1,14 @@ +{ + "pubkey": "9yXjZTevvMp1XgZSZEaziPRgFiXtAQChpnP2oX9eCpvt", + "account": { + "lamports": 72161280, + "data": [ + "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "base64" + ], + "owner": "2o48ieM95rmHqMWC5B3tTX4DL7cLm4m1Kuwjay3keQSv", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 10240 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account2.json b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account2.json new file mode 100644 index 00000000..92aa338f --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account2.json @@ -0,0 +1,14 @@ +{ + "pubkey": "BHBuATGifAD4JbRpM5nVdyhKzPgv3p2CxLEHAqwBzAj5", + "account": { + "lamports": 6458880, + "data": [ + "xUHYyiuLk4C3lIfleolDqv+UtwHkJEZgqjp4sEUdRc0tdFOhP8EvSCAAAAAIAAAAAgAAAAQAAAAIAAAAAAEAAAQAAAAQAAAAQAAAABAAAAAIAAAABAAAAAAEAAACAAAAEAAAAAIAAACsKQAAAQMAAAAAAwMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "base64" + ], + "owner": "2o48ieM95rmHqMWC5B3tTX4DL7cLm4m1Kuwjay3keQSv", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 800 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account3.json b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account3.json new file mode 100644 index 00000000..20cff112 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account3.json @@ -0,0 +1,14 @@ +{ + "pubkey": "669U43LNHx7LsVj95uYksnhXUfWKDsdzVqev3V4Jpw3P", + "account": { + "lamports": 2616960, + "data": [ + "YLNFQoCBSXUCAWQUUYa2ANnUYYrbqZcNlEBTsnm1vMbAD/Shxwnxadi/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL76H/aZ8s+yNqjDDxSUtRpOVjTI+KqvJWTlDETtlxC0VUSCAvIFVTRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAD3U40BAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACp0ZQWAAAAANnEGGgAAAAA5N0WQyoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "base64" + ], + "owner": "HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 248 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account4.json b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account4.json new file mode 100644 index 00000000..6696af0d --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/non-delegated-cloneable-account4.json @@ -0,0 +1,14 @@ +{ + "pubkey": "2EmfL3MqL3YHABudGNmajjCpR13NNEn9Y4LWxbDm6SwR", + "account": { + "lamports": 2616960, + "data": [ + "YLNFQoCBSXUCAWQUUYa2ANnUYYrbqZcNlEBTsnm1vMbAD/Shxwnxadi/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG+g6kHEqHMCPYp+ouemalXBLEFjaIJgFRoL77X+kKFVTREMgLyBVU0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAACxSI0BAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8TpQWAAAAADiRGGgAAAAAlN/1BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "base64" + ], + "owner": "HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 248 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/accounts/old_program_v1.json b/tests/v2-integration/counter/scripts/accounts/old_program_v1.json new file mode 100644 index 00000000..95f54ee7 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/old_program_v1.json @@ -0,0 +1,14 @@ +{ + "pubkey": "BL5oAaURQwAVVHcgrucxJe3H5K57kCQ5Q8ys7dctqfV8", + "account": { + "lamports": 988598400, + "data": [ + "f0VMRgIBAQAAAAAAAAAAAAMA9wABAAAAiGMAAAAAAABAAAAAAAAAAFgnAgAAAAAAAAAAAEAAOAADAEAADAALAAEAAAAFAAAA6AAAAAAAAADoAAAAAAAAAOgAAAAAAAAAcMIBAAAAAABwwgEAAAAAAAAQAAAAAAAAAQAAAAQAAABgwwEAAAAAAGDDAQAAAAAAYMMBAAAAAABkKgAAAAAAAGQqAAAAAAAAABAAAAAAAAACAAAABgAAAMjtAQAAAAAAyO0BAAAAAADI7QEAAAAAACg5AAAAAAAAKDkAAAAAAAAIAAAAAAAAAL8WAAAAAAAAv6EAAAAAAAAHAQAAAP///4UQAAD/EAAAeaEA/wAAAAB7Ghj/AAAAAHmhCP8AAAAAexog/wAAAAB5oRD/AAAAAHsakP8AAAAAexoo/wAAAAC3AQAAgAAAAHMaSP8AAAAAtwEAAAAAAAB7GkD/AAAAAHsaOP8AAAAAtwcAAAEAAAB7ejD/AAAAAL+hAAAAAAAABwEAAID///+/ogAAAAAAAAcCAAAY////hRAAABcMAAB5oYD/AAAAABUBAQABAAAABQADAAAAAAB5oYj/AAAAAHt2AAAAAAAABQAyAAAAAAB5oYj/AAAAAHsaUP8AAAAAeaGQ/wAAAAB7Glj/AAAAAHmhmP8AAAAAexpg/wAAAAB5oaD/AAAAAHsaaP8AAAAAeaGo/wAAAAB7GnD/AAAAAHmhsP8AAAAAexp4/wAAAAB5oSD/AAAAAHmiKP8AAAAAPRIQAAAAAAB5oxj/AAAAABgEAAAAJgAAAAAAAAEAAAC/NQAAAAAAAA8lAAAAAAAAcVUAAAAAAAAlBSQAIAAAALcAAAABAAAAb1AAAAAAAABfQAAAAAAAAFUAAQAAAAAABQAfAAAAAAAHAgAAAQAAAHsqKP8AAAAAHSEBAAAAAAAFAPP/AAAAAHmhUP8AAAAAexqA/wAAAAB5onj/AAAAAHsqqP8AAAAAeaNw/wAAAAB7OqD/AAAAAHmkaP8AAAAAe0qY/wAAAAB5pWD/AAAAAHtakP8AAAAAeaBY/wAAAAB7Coj/AAAAALcHAAAAAAAAe3YAAAAAAAB7JjAAAAAAAHs2KAAAAAAAe0YgAAAAAAB7VhgAAAAAAHsGEAAAAAAAexYIAAAAAAC/pgAAAAAAAAcGAAAw////v2EAAAAAAACFEAAANwsAAL9hAAAAAAAAhRAAABUKAACVAAAAAAAAALcBAAATAAAAexqA/wAAAAC/oQAAAAAAAAcBAAAY////v6IAAAAAAAAHAgAAgP///4UQAAAQAAAAtwEAAAEAAAB7FgAAAAAAAHsGCAAAAAAAv6YAAAAAAAAHBgAAUP///79hAAAAAAAAhRAAACYLAAC/YQAAAAAAAIUQAAAECgAAv6YAAAAAAAAHBgAAaP///79hAAAAAAAAhRAAACALAAC/YQAAAAAAAIUQAAD+CQAABQDi/wAAAAC/JgAAAAAAAL8SAAAAAAAAv6EAAAAAAAAHAQAA2P///4UQAAARFAAAeaPg/wAAAAB5otj/AAAAAHlhEAAAAAAAexr4/wAAAAB5YQgAAAAAAHsa8P8AAAAAeWEAAAAAAAB7Guj/AAAAAL+hAAAAAAAABwEAAOj///+FEAAAERgAAJUAAAAAAAAAezrA/wAAAAB7Gsj/AAAAAHkhEAAAAAAABwEAAAEAAAB7EhAAAAAAAHknCAAAAAAAtwAAAAEAAAAtFwEAAAAAALcAAAAAAAAAPXEeAAAAAAC3CAAACgAAABgJAACYmZmZAAAAAJmZmRkFAAUAAAAAACcEAAAKAAAADzQAAAAAAAAHBQAA/////y0XAQAAAAAABQAVAAAAAAB5IwAAAAAAAA8TAAAAAAAAcTYAAAAAAAAHBgAA0P///79jAAAAAAAAVwMAAP8AAAAtOAEAAAAAAAUADQAAAAAALZQBAAAAAAAFAAUAAAAAABgAAACZmZmZAAAAAJmZmRldBBwAAAAAAFcGAAD/AAAAJQYaAAUAAAAHAQAAAQAAAHsSEAAAAAAAtwAAAAEAAAAtF+j/AAAAALcAAAAAAAAABQDm/wAAAAC/UwAAAAAAAGcDAAAgAAAAdwMAACAAAAAVAxQAAAAAAFcAAAABAAAAVQABAAAAAAAFAAUAAAAAAHkjAAAAAAAADxMAAAAAAABxMQAAAAAAAEcBAAAgAAAAFQEEAGUAAAB5ocj/AAAAAHmjwP8AAAAAhRAAABwAAAAFABoAAAAAAHmhyP8AAAAAeaPA/wAAAACFEAAAFgEAAAUAFgAAAAAAeaHI/wAAAAB5o8D/AAAAAIUQAAA1AwAABQASAAAAAABXAAAAAQAAAL+hAAAAAAAABwEAAOj///+/owAAAAAAAAcDAADQ////VQABAAAAAAC/EwAAAAAAALcBAAAMAAAAVQABAAAAAAC3AQAABQAAAHsTAAAAAAAAvyEAAAAAAAC/MgAAAAAAAIUQAACh////twEAAAEAAAB5osj/AAAAAHsSAAAAAAAAewIIAAAAAACVAAAAAAAAAL9WAAAAAAAAezrY/wAAAAB7KtD/AAAAAHsa4P8AAAAAv2cAAAAAAABnBwAAIAAAAL9xAAAAAAAAxwEAAD8AAADHBwAAIAAAAA8XAAAAAAAArxcAAAAAAAC/QQAAAAAAAIUQAAAqNgAAvwkAAAAAAAC/cQAAAAAAAGcBAAAgAAAAdwEAACAAAAC3AgAANQEAAC0SHwAAAAAAtwgAAMz+//8faAAAAAAAAAUACwAAAAAAv5EAAAAAAAAYAgAAoMjrhQAAAADzzOF/hRAAAH4zAAC/CQAAAAAAAAcIAADM/v//v3EAAAAAAABnAQAAIAAAAHcBAAAgAAAAJQEBADQBAAAFABEAAAAAAL+RAAAAAAAAtwIAAAAAAACFEAAAhTQAABUAMAAAAAAAv2EAAAAAAABnAQAAIAAAAMcBAAAgAAAAZQEiAP////8HBgAANAEAAL9hAAAAAAAAZwEAACAAAADHAQAAIAAAAL+HAAAAAAAAtwIAAAAAAABtEub/AAAAAL9nAAAAAAAABQDk/wAAAABnBwAAIAAAAMcHAAAgAAAAZwcAAAMAAAAYAQAAGMcBAAAAAAAAAAAAD3EAAAAAAAB5EgAAAAAAAGcGAAAgAAAAxwYAACAAAABlBgQA/////7+RAAAAAAAAhRAAAFozAAC/CQAAAAAAAAUAFQAAAAAAv5EAAAAAAACFEAAAGTUAAL8JAAAAAAAAGAIAAP////8AAAAA////f7+RAAAAAAAAXyEAAAAAAAAYAgAAAAAAAAAAAAAAAPB/hRAAAF80AABVAAoAAAAAALcBAAANAAAAexro/wAAAAC/ogAAAAAAAAcCAADo////eaHQ/wAAAACFEAAACQMAAHmi4P8AAAAAewIIAAAAAAC3AQAAAQAAAAUACAAAAAAAeaHY/wAAAABVAQMAAAAAABgBAAAAAAAAAAAAAAAAAICvGQAAAAAAAHmi4P8AAAAAe5IIAAAAAAC3AQAAAAAAAHsSAAAAAAAAlQAAAAAAAAB5EggAAAAAAHkTEAAAAAAAPSOQAAAAAAB5FAAAAAAAAA80AAAAAAAAcUQAAAAAAAAHAwAAAQAAAHsxEAAAAAAAFQQBADAAAAAFAAkAAAAAAD0jFQAAAAAAeRQAAAAAAAAPNAAAAAAAAHFEAAAAAAAABwQAAND///9XBAAA/wAAALcFAAAKAAAALUWHAAAAAAAFAA0AAAAAAAcEAADP////VwQAAP8AAAAlBH0ACAAAAD0jCQAAAAAAeRQAAAAAAAAPNAAAAAAAAHFEAAAAAAAABwQAAND///9XBAAA/wAAACUEAwAJAAAABwMAAAEAAAB7MRAAAAAAAC0y9/8AAAAAtwAAAAAAAAA9I3YAAAAAAHkUAAAAAAAADzQAAAAAAABxRAAAAAAAABUEHABlAAAAFQQbAEUAAABVBHAALgAAAL80AAAAAAAABwQAAAEAAAB7QRAAAAAAAD0kbQAAAAAAtwYAAAEAAAB5FQAAAAAAAL9XAAAAAAAAD0cAAAAAAABxeAAAAAAAAAcIAADQ////VwgAAP8AAAC3BwAAAQAAACUIMwAJAAAABwMAAAIAAAC/NAAAAAAAAAUABwAAAAAAv1MAAAAAAAAPQwAAAAAAAAcEAAABAAAAcTMAAAAAAAAHAwAA0P///1cDAAD/AAAAJQMkAAkAAAB7QRAAAAAAAB1CVwAAAAAABQD2/wAAAAC/NAAAAAAAAAcEAAABAAAAe0EQAAAAAAA9JAgAAAAAAHkVAAAAAAAAD0UAAAAAAABxVQAAAAAAABUFAQAtAAAAVQUDACsAAAAHAwAAAgAAAHsxEAAAAAAAvzQAAAAAAAA9JEQAAAAAAHkTAAAAAAAAvzUAAAAAAAAPRQAAAAAAAHFVAAAAAAAABwQAAAEAAAB7QRAAAAAAAAcFAADQ////VwUAAP8AAAAlBTsACQAAAD0kPwAAAAAAvzUAAAAAAAAPRQAAAAAAAHFVAAAAAAAABwUAAND///9XBQAA/wAAACUFOQAJAAAABwQAAAEAAAB7QRAAAAAAAB1CNgAAAAAABQD2/wAAAAAHBAAA/////7cHAAAAAAAAtwYAAAEAAAAtQgEAAAAAALcGAAAAAAAAVQcwAAAAAABXBgAAAQAAAFUGAQAAAAAABQAsAAAAAAB5EwAAAAAAAL81AAAAAAAAD0UAAAAAAABxVQAAAAAAAEcFAAAgAAAAFQUBAGUAAAAFACUAAAAAAL9FAAAAAAAABwUAAAEAAAB7URAAAAAAAD0lCAAAAAAAvzYAAAAAAAAPVgAAAAAAAHFmAAAAAAAAFQYBAC0AAABVBgMAKwAAAAcEAAACAAAAe0EQAAAAAAC/RQAAAAAAAD0lEwAAAAAAvzQAAAAAAAAPVAAAAAAAAHFEAAAAAAAABwUAAAEAAAB7URAAAAAAAAcEAADQ////VwQAAP8AAAAlBAsACQAAAD0lDwAAAAAAvzQAAAAAAAAPVAAAAAAAAHFEAAAAAAAABwQAAND///9XBAAA/wAAACUECQAJAAAABwUAAAEAAAB7URAAAAAAAB1SBgAAAAAABQD2/wAAAAC3AgAADAAAAHsq6P8AAAAAv6IAAAAAAAAHAgAA6P///4UQAABjAgAAlQAAAAAAAAC3AgAADAAAAHsq6P8AAAAAv6IAAAAAAAAHAgAA6P///4UQAACf/v//BQD5/wAAAAC/WQAAAAAAAL8WAAAAAAAAtwAAAAEAAAB5IRAAAAAAAL8YAAAAAAAABwgAAAEAAAB7ghAAAAAAAHknCAAAAAAAPXgNAAAAAAB5JQAAAAAAAA+FAAAAAAAAcVUAAAAAAAAVBQYAKwAAABUFAQAtAAAABQAHAAAAAAAHAQAAAgAAAHsSEAAAAAAAtwAAAAAAAAAFAAIAAAAAAAcBAAACAAAAexIQAAAAAAC/GAAAAAAAAD14ZwAAAAAAeSEAAAAAAAAPgQAAAAAAAHERAAAAAAAABwgAAAEAAAB7ghAAAAAAAAcBAADQ////VwEAAP8AAAAlAWEACQAAAHsK0P8AAAAAe0rY/wAAAAB7OuD/AAAAAD14FgAAAAAAeSMAAAAAAAAPgwAAAAAAAHE0AAAAAAAABwQAAND///+/QwAAAAAAAFcDAAD/AAAAJQMPAAkAAAAHCAAAAQAAAHuCEAAAAAAAvxUAAAAAAABnBQAAIAAAAL9QAAAAAAAAxwAAACAAAABlAAEAy8zMDAUABAAAAAAAdwUAACAAAABVBUAAzMzMDFcEAAD/AAAAJQQ+AAcAAAAnAQAACgAAAA8xAAAAAAAALYfq/wAAAAB7asj/AAAAAGcBAAAgAAAAZwkAACAAAAC3BgAAAQAAAHUJAQAAAAAAtwYAAAAAAAC/lQAAAAAAAA8VAAAAAAAAtwMAAAEAAAB1BQEAAAAAALcDAAAAAAAAtwAAAAEAAABdNgEAAAAAALcAAAAAAAAAtwMAAAEAAAB1AQEAAAAAALcDAAAAAAAAtwQAAAEAAAAdNgEAAAAAALcEAAAAAAAAXwQAAAAAAAAYAAAA/////wAAAAD///9/GAcAAP////8AAAAA////f7cIAAAAAAAAbVgCAAAAAAAYBwAAAAAAAAAAAAAAAACAVQQBAAAAAAC/VwAAAAAAAB8ZAAAAAAAAtwUAAAEAAAC3CAAAAQAAAF02AQAAAAAAtwUAAAAAAAC3AwAAAQAAAHmk2P8AAAAAdQkBAAAAAAC3AwAAAAAAAF02AQAAAAAAtwgAAAAAAAC3AQAAAAAAAG2RAgAAAAAAGAAAAAAAAAAAAAAAAAAAgF+FAAAAAAAAeaHI/wAAAABVBQEAAAAAAL+QAAAAAAAAxwcAACAAAAB5o9D/AAAAAFUDAgAAAAAAxwAAACAAAAC/BwAAAAAAAHmj4P8AAAAAv3UAAAAAAACFEAAAj/7//5UAAAAAAAAAtwAAAAEAAAB5odj/AAAAABUBAQAAAAAAtwAAAAAAAAC/YQAAAAAAAHmj4P8AAAAAvwQAAAAAAAB5pdD/AAAAAIUQAAC+AQAABQD1/wAAAAC3AQAABQAAAAUAAQAAAAAAtwEAAAwAAAB7Guj/AAAAAL+jAAAAAAAABwMAAOj///+/IQAAAAAAAL8yAAAAAAAAhRAAANUBAAC3AQAAAQAAAHsWAAAAAAAAewYIAAAAAAAFAOj/AAAAAL8YAAAAAAAAeSUIAAAAAAB5IRAAAAAAAD1RYwAAAAAAeSAAAAAAAAC/BAAAAAAAAA8UAAAAAAAAcUQAAAAAAAAHAQAAAQAAAHsSEAAAAAAAFQQBADAAAAAFAA8AAAAAAD1RPgAAAAAADxAAAAAAAABxAQAAAAAAAL8UAAAAAAAABwQAAND///9XBAAA/wAAACUENQAJAAAAtwEAAAwAAAB7Guj/AAAAAL+jAAAAAAAABwMAAOj///+/IQAAAAAAAL8yAAAAAAAAhRAAAPn9//8FAIIAAAAAAL9GAAAAAAAABwYAAM////9XBgAA/wAAALcHAAAJAAAALWcBAAAAAAAFAHUAAAAAAHuK4P8AAAAABwQAAND///9XBAAA/wAAAD1RLgAAAAAAGAcAAJiZmZkAAAAAmZmZGQUAEQAAAAAAGAYAAJmZmZkAAAAAmZmZGV1kAwAAAAAAVwgAAP8AAAC3BgAABgAAAC2GFAAAAAAAv6EAAAAAAAAHAQAA6P///4UQAABNAQAAtwEAAAEAAAB5peD/AAAAAL9TAAAAAAAABwMAAAgAAAB5ovD/AAAAAHmk6P8AAAAAFQRbAAEAAAAFAFYAAAAAAL8GAAAAAAAADxYAAAAAAABxZgAAAAAAAL9oAAAAAAAABwgAAND///+/iQAAAAAAAFcJAAD/AAAAJQkPAAkAAAAtdOb/AAAAAAcBAAABAAAAexIQAAAAAAAnBAAACgAAAA+UAAAAAAAAHRUMAAAAAAAFAPH/AAAAABUBIAAuAAAAFQEpAEUAAAAVASgAZQAAALcHAAABAAAAVQMBAAAAAAC3BwAAAgAAALcBAAAAAAAABQAsAAAAAAAVBlUALgAAABUGMwBFAAAAFQYyAGUAAAC3BwAAAQAAAL9AAAAAAAAAeabg/wAAAABVAwsAAAAAALcHAAACAAAAv0AAAAAAAACHAAAAAAAAALcBAAABAAAAbQEGAAAAAAC/QQAAAAAAAIUQAABQNAAAGAEAAAAAAAAAAAAAAAAAgK8QAAAAAAAAtwcAAAAAAAB7BhAAAAAAAHt2CAAAAAAAtwEAAAAAAAB7FgAAAAAAAAUAOQAAAAAAtwEAAAUAAAAFAC4AAAAAAL+hAAAAAAAABwEAAOj///+3BwAAAAAAALcEAAAAAAAAtwUAAAAAAACFEAAAtf3//3mh8P8AAAAAeaLo/wAAAAAVAg8AAQAAAAUACQAAAAAAv6EAAAAAAAAHAQAA6P///7cHAAAAAAAAtwQAAAAAAAC3BQAAAAAAAIUQAAD8/v//eaHw/wAAAAB5ouj/AAAAABUCBQABAAAAexgQAAAAAAB7eAgAAAAAALcBAAAAAAAAexgAAAAAAAAFAB8AAAAAALcCAAABAAAAeygAAAAAAAB7GAgAAAAAAAUAGwAAAAAAv6EAAAAAAAAHAQAA6P///7cHAAAAAAAAtwUAAAAAAACFEAAA6/7//3mg8P8AAAAAeaHo/wAAAAAVARQAAQAAAHmm4P8AAAAABQDT/wAAAAC3AQAAAAAAAHsVCAAAAAAAv1MAAAAAAAAHAwAAEAAAAHsjAAAAAAAAexUAAAAAAAAFAAoAAAAAALcBAAAMAAAAexro/wAAAAC/owAAAAAAAAcDAADo////vyEAAAAAAAC/MgAAAAAAAIUQAAA0AQAAtwEAAAEAAAB7GAAAAAAAAHsICAAAAAAAlQAAAAAAAAC3AQAAAQAAAHmi4P8AAAAAexIAAAAAAAB7AggAAAAAAAUA+v8AAAAAv6EAAAAAAAAHAQAA6P///7cHAAAAAAAAtwUAAAAAAACFEAAAef3//3mg8P8AAAAAeaHo/wAAAAB5puD/AAAAABUBAQABAAAABQCy/wAAAAC3AQAAAQAAAHsWAAAAAAAAewYIAAAAAAAFAOz/AAAAAL83AAAAAAAAvygAAAAAAAC/FgAAAAAAAHlhEAAAAAAAeWIIAAAAAAA9IYoAAAAAAHliAAAAAAAADxIAAAAAAABxIgAAAAAAAGUCBgBlAAAAFQJuACIAAAAVAmMALQAAABUCAQBbAAAABQAWAAAAAAC3AQAACgAAAAUAkAAAAAAAZQIRAHMAAAAVAh8AZgAAABUCAQBuAAAABQAQAAAAAAAHAQAAAQAAAHsWEAAAAAAAv6EAAAAAAAAHAQAAcP///xgCAABTxAEAAAAAAAAAAAC3AwAAAwAAAIUQAACxCgAAeaF4/wAAAAB5onD/AAAAAB0SfgAAAAAAeWMIAAAAAAB5ZBAAAAAAAAUASgAAAAAAFQInAHQAAAAVAnsAewAAAAcCAADQ////VwIAAP8AAAC3AQAACgAAAC0hAQAAAAAABQBnAAAAAAC/oQAAAAAAAAcBAACw////v2IAAAAAAAC3AwAAAQAAAIUQAAAe////eaGw/wAAAAAVAUgAAQAAAAUAeQAAAAAABwEAAAEAAAB7FhAAAAAAAL+hAAAAAAAABwEAAJD///8YAgAAYMMBAAAAAAAAAAAAtwMAAAQAAACFEAAAlAoAAHmhmP8AAAAAeaKQ/wAAAAAdElsAAAAAAHljCAAAAAAAeWQQAAAAAAAFAAkAAAAAAHllAAAAAAAAD0UAAAAAAABxVQAAAAAAAAcEAAABAAAAe0YQAAAAAABxIAAAAAAAAF0FQwAAAAAABwIAAAEAAAAdIU8AAAAAAC1D9v8AAAAABQAjAAAAAAAHAQAAAQAAAHsWEAAAAAAAv6EAAAAAAAAHAQAAgP///xgCAABQxAEAAAAAAAAAAAC3AwAAAwAAAIUQAAB7CgAAeaGI/wAAAAB5ooD/AAAAAB0SRQAAAAAAeWMIAAAAAAB5ZBAAAAAAAAUACQAAAAAAeWUAAAAAAAAPRQAAAAAAAHFVAAAAAAAABwQAAAEAAAB7RhAAAAAAAHEgAAAAAAAAXQUqAAAAAAAHAgAAAQAAAB0hOQAAAAAALUP2/wAAAAAFAAoAAAAAAHllAAAAAAAAD0UAAAAAAABxVQAAAAAAAAcEAAABAAAAe0YQAAAAAABxIAAAAAAAAF0FHwAAAAAABwIAAAEAAAAdITEAAAAAAC1D9v8AAAAAtwEAAAUAAAAFABsAAAAAAAcBAAABAAAAexYQAAAAAAC/oQAAAAAAAAcBAACw////v2IAAAAAAAC3AwAAAAAAAIUQAADW/v//eaGw/wAAAABVATIAAQAAAAUADgAAAAAABwEAAAEAAAB7FhAAAAAAAL9pAAAAAAAABwkAABgAAAC/kQAAAAAAALcCAAAAAAAAhRAAAPgHAAC/oQAAAAAAAAcBAACw////v2IAAAAAAAC/kwAAAAAAAIUQAAB0DQAAeaGw/wAAAABVAS8AAQAAAHmguP8AAAAABQAgAAAAAAC3AQAACQAAAHsasP8AAAAAv6IAAAAAAAAHAgAAsP///79hAAAAAAAAhRAAAI4AAAAFABkAAAAAALcBAAAKAAAAexqw/wAAAAC/ogAAAAAAAAcCAACw////v2EAAAAAAACFEAAAyfz//wUADwAAAAAAtwEAAAAAAABrGrD/AAAAAAUABwAAAAAAtwEAAAABAABrGrD/AAAAAAUABAAAAAAAtwEAAAcAAAAFAAEAAAAAALcBAAALAAAAcxqw/wAAAAC/oQAAAAAAAAcBAACw////v4IAAAAAAAC/cwAAAAAAAIUQAAAdFgAAvwEAAAAAAAC/YgAAAAAAAIUQAAApCgAAlQAAAAAAAAB5ocD/AAAAAHsa2P8AAAAAeaK4/wAAAAB7KtD/AAAAAHsa8P8AAAAAeyro/wAAAAC/oQAAAAAAAAcBAADo////v4IAAAAAAAC/cwAAAAAAAIUQAAAqCwAABQDw/wAAAAB5ocj/AAAAAHsa4P8AAAAAeaHA/wAAAAB7Gtj/AAAAAHmhuP8AAAAAexrQ/wAAAAC/oQAAAAAAAAcBAACg////v6IAAAAAAAAHAgAA0P///4UQAAAxBwAAtwEAAAUAAABzGuj/AAAAAHmhqP8AAAAAexr4/wAAAAB5oaD/AAAAAHsa8P8AAAAAv6EAAAAAAAAHAQAA6P///wUA2f8AAAAAtwUAAAAAAAB5IAgAAAAAAHkmEAAAAAAAPQYQAAAAAAC3BQAAAAAAAHknAAAAAAAAD2cAAAAAAABxdwAAAAAAAL94AAAAAAAABwgAAND///9XCAAA/wAAACUIBQAJAAAABwYAAAEAAAB7YhAAAAAAAAcFAAABAAAALWD1/wAAAAAFAAMAAAAAABUHBgAuAAAAFQcDAEUAAAAVBwIAZQAAAIUQAADk/P//lQAAAAAAAACFEAAA4P3//wUA/f8AAAAAhRAAAI38//8FAPv/AAAAAHkmCAAAAAAAeSAQAAAAAAA9YBEAAAAAALcHAAAKAAAAeSgAAAAAAAAPCAAAAAAAAHGIAAAAAAAABwgAAND///9XCAAA/wAAAC2HAQAAAAAABQAEAAAAAAAHAAAAAQAAAHsCEAAAAAAALQb2/wAAAAAFAAUAAAAAAHkmAAAAAAAADwYAAAAAAABxYAAAAAAAAEcAAAAgAAAAFQACAGUAAACFEAAAyvz//5UAAAAAAAAAhRAAAMb9//8FAP3/AAAAAL8WAAAAAAAAVQQBAAAAAABVBRQAAAAAAHkhCAAAAAAAeSQQAAAAAAA9FAkAAAAAAHklAAAAAAAAD0UAAAAAAABxVQAAAAAAAAcFAADQ////VwUAAP8AAAAlBQMACQAAAAcEAAABAAAAe0IQAAAAAAAtQff/AAAAALcBAAAAAAAAtwIAAAAAAABVAwIAAAAAABgCAAAAAAAAAAAAAAAAAIB7JggAAAAAAHsWAAAAAAAAlQAAAAAAAAC3AQAADQAAAHsa6P8AAAAAv6MAAAAAAAAHAwAA6P///78hAAAAAAAAvzIAAAAAAACFEAAAAwAAAHsGCAAAAAAAtwEAAAEAAAAFAPT/AAAAAL8mAAAAAAAAvxIAAAAAAAC/oQAAAAAAAAcBAADY////hRAAAC8QAAB5o+D/AAAAAHmi2P8AAAAAeWEQAAAAAAB7Gvj/AAAAAHlhCAAAAAAAexrw/wAAAAB5YQAAAAAAAHsa6P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAABTFAAAlQAAAAAAAACVAAAAAAAAAL8WAAAAAAAAeWcAAAAAAAB5cQAAAAAAABUBBgABAAAAVQEXAAAAAAB5chAAAAAAABUCFQAAAAAAeXEIAAAAAAC3AwAAAQAAAAUAEQAAAAAAcXEIAAAAAAC3AgAAAgAAAC0SDwAAAAAAeXgQAAAAAAB5gQgAAAAAAHkSAAAAAAAAeYEAAAAAAACNAAAAAgAAAHmBCAAAAAAAeRIIAAAAAAAVAgMAAAAAAHkTEAAAAAAAeYEAAAAAAACFEAAAkgoAAHlxEAAAAAAAtwIAABgAAAC3AwAACAAAAIUQAACOCgAAeWEAAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAIoKAACVAAAAAAAAAJUAAAAAAAAAvxYAAAAAAAB5IQAAAAAAAHkTCAAAAAAAeRQQAAAAAAA9NDAAAAAAAHkQAAAAAAAAGAcAAAAmAAAAAAAAAQAAAAUAAwAAAAAABwQAAAEAAAB7QRAAAAAAAB1DKAAAAAAAvwUAAAAAAAAPRQAAAAAAAHFVAAAAAAAAJQUuACwAAAC3CAAAAQAAAG9YAAAAAAAAX3gAAAAAAABVCPX/AAAAABUFAQAsAAAABQAoAAAAAABxIQgAAAAAABUBAQAAAAAABQAwAAAAAAB5IQAAAAAAAHkTEAAAAAAABwMAAAEAAAB7MRAAAAAAAHkhAAAAAAAAeRMIAAAAAAB5FBAAAAAAAD00EQAAAAAAeRUAAAAAAAAYAAAAACYAAAAAAAABAAAAv1cAAAAAAAAPRwAAAAAAAHF3AAAAAAAAJQc8ACAAAAC3CAAAAQAAAG94AAAAAAAAXwgAAAAAAABVCAEAAAAAAAUANwAAAAAABwQAAAEAAAB7QRAAAAAAAB1DAQAAAAAABQDz/wAAAAB5IQAAAAAAALcCAAAFAAAABQACAAAAAAB5IQAAAAAAALcCAAACAAAAeyrI/wAAAAC/ogAAAAAAAAcCAADI////hRAAANT7//+3AQAAAQAAAHsWAAAAAAAAewYIAAAAAAAFACUAAAAAABUFAQBdAAAABQAHAAAAAAC3AQAAAAAAAHsWCAAAAAAAeaLI/wAAAAB7JhAAAAAAAHmi0P8AAAAAeyYYAAAAAAAFABsAAAAAAHEhCAAAAAAAFQEgAAAAAAC3AQAAAAAAAHMSCAAAAAAAFQUaAF0AAAB5IgAAAAAAAL+hAAAAAAAABwEAAMj///+FEAAASgYAAHmhyP8AAAAAFQEBAAEAAAAFAAUAAAAAAHmh0P8AAAAAtwIAAAEAAAB7JgAAAAAAAHsWCAAAAAAABQALAAAAAAB5odD/AAAAAHsamP8AAAAAeaLY/wAAAAB7KqD/AAAAAHmj4P8AAAAAezqo/wAAAAB7NhgAAAAAAHsmEAAAAAAAexYIAAAAAAC3AQAAAAAAAHsWAAAAAAAAlQAAAAAAAAAVBwEAXQAAAAUA5v8AAAAAeSEAAAAAAAC3AgAAEgAAAAUAzf8AAAAAeSEAAAAAAAC3AgAABwAAAAUAyv8AAAAAvycAAAAAAAC/FgAAAAAAAHlyCAAAAAAAeXEQAAAAAAA9IRAAAAAAAHlzAAAAAAAAGAQAAAAmAAAAAAAAAQAAAL81AAAAAAAADxUAAAAAAABxVQAAAAAAACUFEwAgAAAAtwAAAAEAAABvUAAAAAAAAF9AAAAAAAAAVQABAAAAAAAFAA4AAAAAAAcBAAABAAAAexcQAAAAAAAdEgEAAAAAAAUA8/8AAAAAtwEAAAUAAAB7Gsj/AAAAAL+iAAAAAAAABwIAAMj///+/cQAAAAAAAIUQAACH+///twEAAAEAAAB7FgAAAAAAAHsGCAAAAAAAlQAAAAAAAAAVBQsAIgAAAL+iAAAAAAAABwIAAMj///+/cQAAAAAAABgDAADI7gEAAAAAAAAAAACFEAAAHf7//78BAAAAAAAAtwIAAAEAAAB7Kqj/AAAAAHsasP8AAAAABQAWAAAAAAAHAQAAAQAAAHsXEAAAAAAAv3gAAAAAAAAHCAAAGAAAAL+BAAAAAAAAtwIAAAAAAACFEAAAiQYAAL+hAAAAAAAABwEAAMj///+/cgAAAAAAAL+DAAAAAAAAhRAAAAUMAAB5ocj/AAAAABUBFwABAAAAeaPg/wAAAAB5otj/AAAAAL+hAAAAAAAABwEAAKj///+FEAAARAYAAHmhqP8AAAAAVQEVAAEAAAB5obD/AAAAAL9yAAAAAAAAhRAAANIIAAB7BggAAAAAAHmhqP8AAAAAtwIAAAEAAAB7JgAAAAAAABUBAQAAAAAABQDV/wAAAAC/pgAAAAAAAAcGAACw////v2EAAAAAAACFEAAAcgYAAL9hAAAAAAAAhRAAAFAFAAAFAM7/AAAAAHmh0P8AAAAAtwIAAAEAAAB7JgAAAAAAAHsWCAAAAAAABQDJ/wAAAAB5ocD/AAAAAHsa+P8AAAAAeaK4/wAAAAB7KvD/AAAAAHmjsP8AAAAAezro/wAAAAB7Gtj/AAAAAHsq0P8AAAAAezrI/wAAAAB7FhgAAAAAAHsmEAAAAAAAezYIAAAAAAC3AQAAAAAAAHsWAAAAAAAABQC6/wAAAAC/JwAAAAAAAL8ZAAAAAAAAeXMIAAAAAAB5cRAAAAAAAD0xDwAAAAAAeXIAAAAAAAAYBAAAACYAAAAAAAABAAAAvyUAAAAAAAAPFQAAAAAAAHFVAAAAAAAAJQUSACAAAAC3AAAAAQAAAG9QAAAAAAAAX0AAAAAAAABVAAEAAAAAAAUADQAAAAAABwEAAAEAAAB7FxAAAAAAAC0T9P8AAAAAtwEAAAUAAAB7Ggj+AAAAAL+iAAAAAAAABwIAAAj+//+/cQAAAAAAAIUQAAAk+///twEAAAEAAAB7GQAAAAAAAHsJCAAAAAAAlQAAAAAAAAAVBRcCWwAAABUFCgB7AAAAv6IAAAAAAAAHAgAA+P///79xAAAAAAAAGAMAAOjuAQAAAAAAAAAAAIUQAAC5/f//ewqg/QAAAAC3AQAAAQAAAHsamP0AAAAABQBFBAAAAABxdDAAAAAAAAcEAAD/////c0cwAAAAAAC/ogAAAAAAAAcCAAAI/v//VwQAAP8AAAAVBKcCAAAAAAcBAAABAAAAexcQAAAAAAC3BgAAAAAAAHtq+P4AAAAAe2oQ/wAAAAB7mkD9AAAAAD0x5gEAAAAAv6IAAAAAAAAHAgAAEP7//3sqMP0AAAAAtwIAAAEAAAC/dAAAAAAAAAcEAAAYAAAAe0o4/QAAAAAYCAAAACYAAAAAAAABAAAAeXQAAAAAAAAFAAMAAAAAAAcBAAABAAAAexcQAAAAAAAdE9gBAAAAAL9FAAAAAAAADxUAAAAAAABxVQAAAAAAACUFGQAsAAAAtwAAAAEAAABvUAAAAAAAAF+AAAAAAAAAVQD1/wAAAAAVBQEALAAAAAUAEwAAAAAAVwIAAP8AAAAVAgEAAAAAAAUAXwMAAAAABwEAAAEAAAB7FxAAAAAAAD0xjwIAAAAAv0IAAAAAAAAPEgAAAAAAAHElAAAAAAAAJQUMACAAAAC3AgAAAQAAAG9SAAAAAAAAX4IAAAAAAABVAgEAAAAAAAUABwAAAAAABwEAAAEAAAB7FxAAAAAAAB0TgwIAAAAABQDz/wAAAAAVBXcCfQAAAFcCAAD/AAAAFQJQAwAAAAAVBQIAIgAAABUFWQN9AAAABQBJAwAAAAAHAQAAAQAAAHsXEAAAAAAAeag4/QAAAAC/gQAAAAAAALcCAAAAAAAAhRAAAOgFAAC/oQAAAAAAAAcBAAAI/v//v3IAAAAAAAC/gwAAAAAAAIUQAABkCwAAeaEI/gAAAABVAQcAAQAAALcBAAABAAAAcxp4/gAAAAB5oRD+AAAAAHsaOP0AAAAAexqA/gAAAAC3BgAAAAAAAAUAqAEAAAAAeaMg/gAAAAB5ohj+AAAAAL+hAAAAAAAABwEAAHj+//+FEAAAhwYAAHGheP4AAAAAVQECAAEAAAB5oYD+AAAAAAUASAMAAAAAcaF5/gAAAAAVASkAAAAAABgIAAAAJgAAAAAAAAEAAAAVARIAAQAAAHlyCAAAAAAAeXEQAAAAAAA9ITEDAAAAAHlzAAAAAAAAvzQAAAAAAAAPFAAAAAAAAHFEAAAAAAAAJQQhAzoAAAC3BQAAAQAAAG9FAAAAAAAAX4UAAAAAAABVBQIAAAAAABUELwA6AAAABQAbAwAAAAAHAQAAAQAAAHsXEAAAAAAAHRIjAwAAAAAFAPL/AAAAAHmhEP8AAAAAVQEkAwAAAAB5cggAAAAAAHlxEAAAAAAAPSH6AgAAAAB5cwAAAAAAAL80AAAAAAAADxQAAAAAAABxRAAAAAAAACUE9wI6AAAAtwUAAAEAAABvRQAAAAAAAF+FAAAAAAAAVQUCAAAAAAAVBDIBOgAAAAUA8QIAAAAABwEAAAEAAAB7FxAAAAAAAB0S7AIAAAAABQDy/wAAAAB5ofj+AAAAABgIAAAAJgAAAAAAAAEAAABVARMDAAAAAHlyCAAAAAAAeXEQAAAAAAA9IeQCAAAAAHlzAAAAAAAAvzQAAAAAAAAPFAAAAAAAAHFEAAAAAAAAJQThAjoAAAC3BQAAAQAAAG9FAAAAAAAAX4UAAAAAAABVBQIAAAAAABUEOgE6AAAABQDbAgAAAAAHAQAAAQAAAHsXEAAAAAAAHRLWAgAAAAAFAPL/AAAAAAcBAAABAAAAexcQAAAAAAB5oTj9AAAAALcCAAAAAAAAhRAAAIsFAAB5cggAAAAAAHlxEAAAAAAAPSEOAQAAAAC3BQAAAAAAAHlzAAAAAAAAvzQAAAAAAAAPFAAAAAAAAHFGAAAAAAAAZQYTACwAAAAlBoMAIgAAALcEAAABAAAAb2QAAAAAAABfhAAAAAAAAFUECgAAAAAAFQYBACIAAAAFAH0AAAAAAHtaIP0AAAAABwEAAAEAAAB7FxAAAAAAAL9xAAAAAAAAhRAAAL0LAAC3BgAAAAAAABUAgQAAAAAABQAHAgAAAAAHAQAAAQAAAHsXEAAAAAAALRLq/wAAAAAFAPUAAAAAAGUGHwBtAAAAFQZLAC0AAAAVBiEAWwAAABUGAQBmAAAABQBsAAAAAAB7WiD9AAAAAAcBAAABAAAAexcQAAAAAAC/oQAAAAAAAAcBAACI/f//GAIAAGDDAQAAAAAAAAAAALcDAAAEAAAAhRAAALYHAAB5oZD9AAAAAHmiiP0AAAAAtwYAAAAAAAAdEmoAAAAAAHlzCAAAAAAAeXQQAAAAAAAFAAkAAAAAAHl1AAAAAAAAD0UAAAAAAABxVQAAAAAAAAcEAAABAAAAe0cQAAAAAABxIAAAAAAAAF0FzQIAAAAABwIAAAEAAAAdIV4AAAAAAC1D9v8AAAAABQBPAAAAAAAVBjQAbgAAABUGEAB0AAAAFQYBAHsAAAAFAE0AAAAAAFcFAAD//wAAtwIAAAEAAABVBQEAAAAAALcCAAAAAAAAeaE4/QAAAAB5oyj9AAAAAIUQAABqBQAAeXEQAAAAAAAHAQAAAQAAAHsXEAAAAAAAe2oo/QAAAAC3BgAAAAAAALcAAAAAAAAABQBcAAAAAAB7WiD9AAAAAAcBAAABAAAAexcQAAAAAAC/oQAAAAAAAAcBAAB4/f//GAIAAFDEAQAAAAAAAAAAALcDAAADAAAAhRAAAIkHAAB5oYD9AAAAAHmieP0AAAAAtwYAAAAAAAAdEj0AAAAAAHlzCAAAAAAAeXQQAAAAAAAFAAkAAAAAAHl1AAAAAAAAD0UAAAAAAABxVQAAAAAAAAcEAAABAAAAe0cQAAAAAABxIAAAAAAAAF0FoAIAAAAABwIAAAEAAAAdITEAAAAAAC1D9v8AAAAABQAiAAAAAAB7WiD9AAAAAAcBAAABAAAAexcQAAAAAAC/cQAAAAAAAIUQAADH+v//twYAAAAAAAAVACgAAAAAAAUArgEAAAAAe1og/QAAAAAHAQAAAQAAAHsXEAAAAAAAv6EAAAAAAAAHAQAAaP3//xgCAABTxAEAAAAAAAAAAAC3AwAAAwAAAIUQAABmBwAAeaFw/QAAAAB5omj9AAAAALcGAAAAAAAAHRIaAAAAAAB5cwgAAAAAAHl0EAAAAAAABQAJAAAAAAB5dQAAAAAAAA9FAAAAAAAAcVUAAAAAAAAHBAAAAQAAAHtHEAAAAAAAcSAAAAAAAABdBX0CAAAAAAcCAAABAAAAHSEOAAAAAAAtQ/b/AAAAALcBAAAFAAAABQB5AgAAAAB7WiD9AAAAAAcGAADQ////VwYAAP8AAAC3AQAACgAAAC1hAQAAAAAABQB5AgAAAAC/cQAAAAAAAIUQAACg+v//twYAAAAAAAAVAAEAAAAAAAUAhwEAAAAAtwAAAAEAAAB5oSD9AAAAAFcBAAD//wAAVQEOAAAAAAB5cSgAAAAAABUBrwAAAAAABwEAAP////97FygAAAAAAL+hAAAAAAAABwEAAFj9//95ojj9AAAAAIUQAAD9BAAAeXEoAAAAAAB5olj9AAAAAA8SAAAAAAAAcSEAAAAAAAB7Gij9AAAAALcAAAABAAAAeXIIAAAAAAB5cRAAAAAAAD0hPwIAAAAAeXMAAAAAAAC/NAAAAAAAAA8UAAAAAAAAcUQAAAAAAAAlBAUALAAAALcFAAABAAAAb0UAAAAAAABfhQAAAAAAAFUFBAAAAAAAFQQlACwAAAAVBAYAXQAAABUECQB9AAAABQALAAAAAAAHAQAAAQAAAHsXEAAAAAAALRLx/wAAAAAFAC4CAAAAAHmkKP0AAAAAVwQAAP8AAAAVBAcAWwAAAAUAAwAAAAAAeaQo/QAAAABXBAAA/wAAABUEAwB7AAAAVwAAAAEAAABVAEcCAAAAAAUAGQAAAAAABwEAAAEAAAB7FxAAAAAAAHlxKAAAAAAAFQGBAAAAAAAHAQAA/////3sXKAAAAAAAv6EAAAAAAAAHAQAASP3//3miOP0AAAAAhRAAAM8EAAB5cSgAAAAAAHmiSP0AAAAADxIAAAAAAAC3AAAAAQAAAHEhAAAAAAAAexoo/QAAAAB5cggAAAAAAHlxEAAAAAAALRLS/wAAAAAFABACAAAAAFcAAAABAAAAVQABAAAAAAAFAAIAAAAAAAcBAAABAAAAexcQAAAAAAB5pCj9AAAAAFcEAAD/AAAAealA/QAAAAAVBAEAewAAAAUAKQAAAAAAPSEMAgAAAAC/NAAAAAAAAA8UAAAAAAAAcUQAAAAAAAAlBPsBIgAAALcFAAABAAAAb0UAAAAAAABfhQAAAAAAAFUFAgAAAAAAFQQFACIAAAAFAPUBAAAAAAcBAAABAAAAexcQAAAAAAAdEv8BAAAAAAUA8v8AAAAABwEAAAEAAAB7FxAAAAAAAL9xAAAAAAAAhRAAANkKAAAVAAEAAAAAAAUAJAEAAAAAeXIIAAAAAAB5cRAAAAAAAD0h9QEAAAAAeXMAAAAAAAC/NAAAAAAAAA8UAAAAAAAAcUQAAAAAAAAlBOUBOgAAALcFAAABAAAAb0UAAAAAAABfhQAAAAAAAFUFAgAAAAAAFQQFADoAAAAFAN8BAAAAAAcBAAABAAAAexcQAAAAAAAdEucBAAAAAAUA8v8AAAAABwEAAAEAAAB7FxAAAAAAALcFAAABAAAALRL0/gAAAAAFAAcBAAAAAAcBAAABAAAAexcQAAAAAAC/oQAAAAAAAAcBAAAI/v//v3IAAAAAAACFEAAA5gMAAHmhCP4AAAAAFQHnAQEAAAB5ozD9AAAAAHkxEAAAAAAAeTIIAAAAAAB5MwAAAAAAAHs6QP8AAAAAeypI/wAAAAB7GlD/AAAAAHmhEP8AAAAAFQEGAAAAAAC/qQAAAAAAAAcJAAAQ////v5EAAAAAAACFEAAAaAQAAL+RAAAAAAAAhRAAAEYDAAB5oVD/AAAAAHsaIP8AAAAAeaFI/wAAAAB7Ghj/AAAAAHmhQP8AAAAAexoQ/wAAAAAFAB0AAAAAAAcBAAABAAAAexcQAAAAAAC/oQAAAAAAAAcBAAAI/v//v3IAAAAAAACFEAAAyAMAAHmhCP4AAAAAFQHJAQEAAAB5ozD9AAAAAHkxEAAAAAAAeTIIAAAAAAB5MwAAAAAAAHs6QP8AAAAAeypI/wAAAAB7GlD/AAAAAHmh+P4AAAAAFQEGAAAAAAC/qQAAAAAAAAcJAAD4/v//v5EAAAAAAACFEAAASgQAAL+RAAAAAAAAhRAAACgDAAB5oVD/AAAAAHsaCP8AAAAAeaFI/wAAAAB7GgD/AAAAAHmhQP8AAAAAexr4/gAAAAC3AgAAAAAAAHlzCAAAAAAAeXEQAAAAAAB5qUD9AAAAAC0TI/4AAAAAtwEAAAMAAAB7Ggj+AAAAAL+iAAAAAAAABwIAAAj+//+/cQAAAAAAAIUQAAAa+f//ewo4/QAAAAB5oRD/AAAAABUBBgAAAAAAv6gAAAAAAAAHCAAAEP///7+BAAAAAAAAhRAAADAEAAC/gQAAAAAAAIUQAAAOAwAAtwkAAAEAAAB5ovj+AAAAALcBAAABAAAAFQIBAAAAAAC3AQAAAAAAAE8WAAAAAAAAVwYAAAEAAABVBiIBAAAAAAUAGwEAAAAAcXMwAAAAAAAHAwAA/////3M3MAAAAAAAv6IAAAAAAAAHAgAAeP7//1cDAAD/AAAAFQObAAAAAAB7mkD9AAAAAAcBAAABAAAAexcQAAAAAAC3CQAAAQAAAHOaGP8AAAAAe3oQ/wAAAAC/oQAAAAAAAAcBAAAI/v//v6IAAAAAAAAHAgAAEP///4UQAADo/P//eaEI/gAAAAAVARsAAQAAAHmhGP4AAAAAexpI/gAAAAB5oSD+AAAAAHsaUP4AAAAAeaEQ/gAAAAAVAasAAAAAAHsaeP4AAAAAeaFI/gAAAAB7GoD+AAAAAHmhUP4AAAAAexqI/gAAAAC/oQAAAAAAAAcBAAAI/v//v6IAAAAAAAAHAgAAEP///4UQAADW/P//eaEI/gAAAABVAQsAAQAAAHmoEP4AAAAAv6kAAAAAAAAHCQAAeP7//7+RAAAAAAAAhRAAAPoDAAC/kQAAAAAAAIUQAADYAgAAtwkAAAEAAAAFAB4AAAAAAHmoEP4AAAAABQAcAAAAAAB5oRj+AAAAAHsaSP4AAAAAeaEg/gAAAAB7GlD+AAAAAHmmEP4AAAAAFQY9AQAAAAC/oQAAAAAAAAcBAACA/v//eaJI/gAAAAB7KkD/AAAAAHmjUP4AAAAAezpI/wAAAAB5FAgAAAAAAHkRAAAAAAAAeyrg/QAAAAB7Ouj9AAAAAHsaCP4AAAAAe0oQ/gAAAAB7SlD+AAAAAHsaSP4AAAAAeah4/gAAAAB7SgD/AAAAAHsa+P4AAAAAeaHo/QAAAAB7Gtj9AAAAAHmh4P0AAAAAexrQ/QAAAAC3CQAAAAAAAHFxMAAAAAAABwEAAAEAAABzFzAAAAAAAHmh+P4AAAAAexp4/gAAAAB5oQD/AAAAAHsagP4AAAAAeaHY/QAAAAB7GlD+AAAAAHmh0P0AAAAAexpI/gAAAAB5cggAAAAAAHlxEAAAAAAAPSEvAAAAAAB5cwAAAAAAABgEAAAAJgAAAAAAAAEAAAAFAAMAAAAAAAcBAAABAAAAexcQAAAAAAAdEigAAAAAAL81AAAAAAAADxUAAAAAAABxVQAAAAAAACUFGAAsAAAAtwAAAAEAAABvUAAAAAAAAF9AAAAAAAAAVQD1/wAAAAAVBQEALAAAAAUAEgAAAAAABwEAAAEAAAB7FxAAAAAAAD0hGQAAAAAAGAQAAAAmAAAAAAAAAQAAAL81AAAAAAAADxUAAAAAAABxVQAAAAAAACUFDwAgAAAAtwAAAAEAAABvUAAAAAAAAF9AAAAAAAAAVQABAAAAAAAFAAoAAAAAAAcBAAABAAAAexcQAAAAAAAdEgsAAAAAAAUA8/8AAAAAFQUBAF0AAAAFAAgAAAAAAAcBAAABAAAAexcQAAAAAAC3AAAAAAAAAAUADAAAAAAAFQUBAF0AAAAFAAIAAAAAALcBAAASAAAABQADAAAAAAC3AQAAEwAAAAUAAQAAAAAAtwEAAAIAAAB7Ggj+AAAAAL+iAAAAAAAABwIAAAj+//+/cQAAAAAAAIUQAAB4+P//e4oQ/gAAAAB5oXj+AAAAAHsaGP4AAAAAeaGA/gAAAAB7GiD+AAAAAHtqKP4AAAAAeaFI/gAAAAB7GjD+AAAAAHmhUP4AAAAAexo4/gAAAAB7CkD+AAAAAHuaCP4AAAAAVQkBAAAAAAAFABwBAAAAALcGAAABAAAAtwEAAAAAAAC/gAAAAAAAAAUAGwEAAAAAtwEAABUAAAB7EgAAAAAAAAUAPf0AAAAAeaH4/gAAAAAVAREAAAAAAHmh+P4AAAAAexpI/gAAAAB5oQD/AAAAAHsaUP4AAAAAeaEI/wAAAAB7Glj+AAAAALcBAAAAAAAABQAlAAAAAAC3AQAABQAAAHsaCP4AAAAAv6IAAAAAAAAHAgAACP7//79xAAAAAAAAhRAAAFP4//97Cjj9AAAAALcGAAAAAAAABQA3/wAAAAC/oQAAAAAAAAcBAAAI/v//GAIAAMPEAQAAAAAAAAAAALcDAAADAAAAhRAAABMDAAB5oQj+AAAAABUBAQABAAAABQAMAAAAAAC3BgAAAAAAAHmhEP4AAAAAexo4/QAAAAAFACr/AAAAALcBAAAAAAAAGAIAAAjvAQAAAAAAAAAAABgDAAAY7wEAAAAAAAAAAACFEAAA6wUAAL8IAAAAAAAABQBg/wAAAAB5oRD+AAAAAHsaSP4AAAAAeaEY/gAAAAB7GlD+AAAAAHmhIP4AAAAAexpY/gAAAAC3AQAAAQAAAHsaMP0AAAAAeaEQ/wAAAABVARYAAAAAAL+hAAAAAAAABwEAAAj+//8YAgAAxsQBAAAAAAAAAAAAtwMAAAYAAACFEAAA9AIAAHmhCP4AAAAAFQEBAAEAAAAFABUAAAAAAHmhEP4AAAAAexo4/QAAAAC/qAAAAAAAAAcIAABI/v//v4EAAAAAAACFEAAAPwMAAL+BAAAAAAAAhRAAAB0CAAC3BgAAAQAAAHmhMP0AAAAAFQEE/wAAAAC3BgAAAAAAAAUAAv8AAAAAeaIQ/wAAAAB7Knj+AAAAAHmiGP8AAAAAeyqA/gAAAAB5oiD/AAAAAHsqiP4AAAAAtwIAAAEAAAAFAAgAAAAAAHmhEP4AAAAAexp4/gAAAAB5oRj+AAAAAHsagP4AAAAAeaEg/gAAAAB7Goj+AAAAALcCAAAAAAAAeaEQ/wAAAAB5o1D+AAAAAHs6CP4AAAAAeaRY/gAAAAB7ShD+AAAAAHmleP4AAAAAe1oY/gAAAAB5oID+AAAAAHsKIP4AAAAAeaaI/gAAAAB7aij+AAAAAHmoSP4AAAAAe4o4/QAAAAB7agD+AAAAAHsK+P0AAAAAe1rw/QAAAAB7Suj9AAAAAHs64P0AAAAAVQIHAAAAAAAVAQYAAAAAAL+oAAAAAAAABwgAABD///+/gQAAAAAAAIUQAAARAwAAv4EAAAAAAACFEAAA7wEAALcJAAAAAAAAeaEw/QAAAAAVAQgAAAAAAHmh+P4AAAAAFQEGAAAAAAC/qAAAAAAAAAcIAAD4/v//v4EAAAAAAACFEAAABgMAAL+BAAAAAAAAhRAAAOQBAABxcTAAAAAAAAcBAAABAAAAcxcwAAAAAAB5oQD+AAAAAHsamP4AAAAAeaH4/QAAAAB7GpD+AAAAAHmh8P0AAAAAexqI/gAAAAB5oej9AAAAAHsagP4AAAAAeaHg/QAAAAB7Gnj+AAAAAHlyCAAAAAAAeXEQAAAAAAA9IRkAAAAAAHlzAAAAAAAAGAQAAAAmAAAAAAAAAQAAAAUAAwAAAAAABwEAAAEAAAB7FxAAAAAAAB0SEgAAAAAAvzUAAAAAAAAPFQAAAAAAAHFVAAAAAAAAJQUIACwAAAC3AAAAAQAAAG9QAAAAAAAAX0AAAAAAAABVAPX/AAAAABUFAQAsAAAABQACAAAAAAC3AQAAEgAAAAUACQAAAAAAFQUBAH0AAAAFAAYAAAAAAAcBAAABAAAAexcQAAAAAAC3AAAAAAAAAAUACAAAAAAAtwEAAAMAAAAFAAEAAAAAALcBAAATAAAAexoI/gAAAAC/ogAAAAAAAAcCAAAI/v//v3EAAAAAAACFEAAAtvf//3miOP0AAAAAeyoQ/gAAAAB5oXj+AAAAAHsaGP4AAAAAeaGA/gAAAAB7GiD+AAAAAHmhiP4AAAAAexoo/gAAAAB5oZD+AAAAAHsaMP4AAAAAeaGY/gAAAAB7Gjj+AAAAAHsKQP4AAAAAe5oI/gAAAABVCQEAAAAAAAUAmAAAAAAAtwYAAAEAAAC3AQAAAAAAAL8gAAAAAAAABQCXAAAAAAC3AQAAAwAAAAUAAQAAAAAAtwEAAAYAAAB7Gnj+AAAAAL+iAAAAAAAABwIAAHj+//+/cQAAAAAAAIUQAACa9///twEAAAEAAAB7Ggj+AAAAAHsKOP0AAAAAewoQ/gAAAAC3BgAAAAAAAAUAe/4AAAAAtwEAAAEAAAAYAgAACO8BAAAAAAAAAAAAGAMAABjvAQAAAAAAAAAAAIUQAAA8BQAAvwgAAAAAAAAFAKv+AAAAALcBAAAQAAAABQAy/wAAAAC3AQAABgAAAAUAMP8AAAAAtwEAAAgAAAAFAC7/AAAAALcBAAACAAAAeaIo/QAAAABXAgAA/wAAAHmpQP0AAAAAFQIp/1sAAAAVAgEAewAAAAUAKQAAAAAAtwEAAAMAAAAFACX/AAAAALcBAAASAAAABQAj/wAAAAAYAQAAxsQBAAAAAAAAAAAAtwIAAAYAAACFEAAATQUAAAUAI/8AAAAAGAEAAMPEAQAAAAAAAAAAALcCAAADAAAAhRAAAEgFAAAFAB7/AAAAAHmhEP4AAAAAexo4/QAAAAC3BgAAAAAAAAUAVP4AAAAAtwEAAAkAAAB7Ggj+AAAAAL+iAAAAAAAABwIAAAj+//+/cQAAAAAAAIUQAAAl+///BQAT/wAAAAC3AQAACgAAAAUADP8AAAAAtwEAAAcAAAB5oyj9AAAAAFcDAAD/AAAAvzIAAAAAAAAVAwIAWwAAAFUCDAB7AAAAtwEAAAgAAAB7Ggj+AAAAAL+iAAAAAAAABwIAAAj+//+/cQAAAAAAAIUQAABY9///ealA/QAAAAAFAAP/AAAAABgBAACw7gEAAAAAAAAAAACFEAAAwxgAAIUQAAD/////GAEAAJjuAQAAAAAAAAAAAIUQAAC/GAAAhRAAAP////+3BgAAAAAAALcBAAABAAAAFQAJAAAAAAB7CqD9AAAAALcCAAABAAAAeyqY/QAAAAAVCSMAAAAAABUBLwAAAAAAv6EAAAAAAAAHAQAAEP7//4UQAAAT+///BQArAAAAAAB5oTj+AAAAAHsacP4AAAAAeaIw/gAAAAB7Kmj+AAAAAHmjKP4AAAAAezpg/gAAAAB5pCD+AAAAAHtKWP4AAAAAeaUY/gAAAAB7WlD+AAAAAHmgEP4AAAAAewpI/gAAAAB7GqD+AAAAAHsqmP4AAAAAezqQ/gAAAAB7Soj+AAAAAHtagP4AAAAAewp4/gAAAAB7Gsj9AAAAAHsqwP0AAAAAezq4/QAAAAB7SrD9AAAAAHtaqP0AAAAAewqg/QAAAAC3BgAAAQAAALcCAAAAAAAAeyqY/QAAAAC3AQAAAQAAABUJAQAAAAAABQDd/wAAAAAVAgwAAAAAAL+oAAAAAAAABwgAACj+//+/qQAAAAAAAAcJAAAQ/v//v5EAAAAAAACFEAAAOgIAAL+RAAAAAAAAhRAAABgBAAC/gQAAAAAAAIUQAAA2AgAAv4EAAAAAAACFEAAAFAEAAHmhQP4AAAAAFQEFAAAAAACnBgAAAQAAAFUGAwAAAAAAv6EAAAAAAAAHAQAAQP7//4UQAADg+v//ealA/QAAAAAFAD8AAAAAALcGAAAAAAAAtwEAAAEAAAAVAAkAAAAAAHsKoP0AAAAAtwIAAAEAAAB7Kpj9AAAAABUJIwAAAAAAFQEvAAAAAAC/oQAAAAAAAAcBAAAQ/v//hRAAANP6//8FACsAAAAAAHmhOP4AAAAAexpw/gAAAAB5ojD+AAAAAHsqaP4AAAAAeaMo/gAAAAB7OmD+AAAAAHmkIP4AAAAAe0pY/gAAAAB5pRj+AAAAAHtaUP4AAAAAeaAQ/gAAAAB7Ckj+AAAAAHsaoP4AAAAAeyqY/gAAAAB7OpD+AAAAAHtKiP4AAAAAe1qA/gAAAAB7Cnj+AAAAAHsayP0AAAAAeyrA/QAAAAB7Orj9AAAAAHtKsP0AAAAAe1qo/QAAAAB7CqD9AAAAALcGAAABAAAAtwIAAAAAAAB7Kpj9AAAAALcBAAABAAAAFQkBAAAAAAAFAN3/AAAAABUCDAAAAAAAv6gAAAAAAAAHCAAAEP7//7+BAAAAAAAAhRAAAPwBAAC/gQAAAAAAAIUQAADaAAAAv6gAAAAAAAAHCAAAKP7//7+BAAAAAAAAhRAAAPYBAAC/gQAAAAAAAIUQAADUAAAAeaFA/gAAAAB5qUD9AAAAABUBBQAAAAAApwYAAAEAAABVBgMAAAAAAL+hAAAAAAAABwEAAED+//+FEAAAn/r//3mhmP0AAAAAVQEBAAEAAAAFABsAAAAAAHmhyP0AAAAAexqg/gAAAAB5osD9AAAAAHsqmP4AAAAAeaO4/QAAAAB7OpD+AAAAAHmksP0AAAAAe0qI/gAAAAB5paj9AAAAAHtagP4AAAAAeaCg/QAAAAB7Cnj+AAAAAHsaMP4AAAAAeyoo/gAAAAB7OiD+AAAAAHtKGP4AAAAAe1oQ/gAAAAB7Cgj+AAAAAHsZMAAAAAAAeykoAAAAAAB7OSAAAAAAAHtJGAAAAAAAe1kQAAAAAAB7CQgAAAAAALcBAAAAAAAAexkAAAAAAACVAAAAAAAAAHmhoP0AAAAAv3IAAAAAAACFEAAAIQQAAHsJCAAAAAAAeaGY/QAAAAC3AgAAAQAAAHspAAAAAAAAFQEBAAAAAAAFAPb/AAAAAL+mAAAAAAAABwYAAKD9//+/YQAAAAAAAIUQAADBAQAAv2EAAAAAAACFEAAAnwAAAL+mAAAAAAAABwYAALj9//+/YQAAAAAAAIUQAAC7AQAAv2EAAAAAAACFEAAAmQAAAAUA6f8AAAAAvyYAAAAAAAC/FwAAAAAAALcBAAABAAAAFQYQAAAAAABVAwYAAAAAAL9hAAAAAAAAtwIAAAEAAACFEAAACwUAAL8BAAAAAAAAVQEKAAAAAAAFAAUAAAAAAL9hAAAAAAAAtwIAAAEAAACFEAAACwUAAL8BAAAAAAAAVQEEAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAACUYAACFEAAA/////4UQAAApAQAAewcAAAAAAAB7ZwgAAAAAAJUAAAAAAAAAvycAAAAAAAC/FgAAAAAAAHliCAAAAAAALScYAAAAAAAVBwoAAAAAAB1yFQAAAAAAeWEAAAAAAAC3AwAAAQAAAL90AAAAAAAAhRAAAPUEAABVAAwAAAAAAL9xAAAAAAAAtwIAAAEAAACFEAAAEhgAAIUQAAD/////FQIDAAAAAAB5YQAAAAAAALcDAAABAAAAhRAAAOoEAAC3AQAAAQAAAHsWAAAAAAAAtwcAAAAAAAAFAAMAAAAAAL8BAAAAAAAAhRAAAA0BAAB7BgAAAAAAAHt2CAAAAAAAlQAAAAAAAAAYAQAAOO8BAAAAAAAAAAAAhRAAAPMoAACFEAAA/////3kQAAAAAAAAlQAAAAAAAAB5EAAAAAAAAJUAAAAAAAAAvxYAAAAAAAB5ZwgAAAAAAL9xAAAAAAAAHyEAAAAAAAA9MUsAAAAAAL8pAAAAAAAADzkAAAAAAAC3AQAAAQAAAC2SAQAAAAAAtwEAAAAAAABVARAAAQAAAL+hAAAAAAAABwEAAMD///+/kgAAAAAAALcDAAAAAAAAhRAAAOwAAAB5o8j/AAAAAHmiwP8AAAAAv6EAAAAAAAAHAQAAsP///4UQAADnAAAAeaG4/wAAAAAVAUMAAAAAABgBAABg7wEAAAAAAAAAAACFEAAA1CgAAIUQAAD/////v6EAAAAAAAAHAQAA8P///4UQAAAcAQAAeaj4/wAAAAB5o/D/AAAAAL8yAAAAAAAAD4IAAAAAAAAHAgAA/////7+BAAAAAAAAhwEAAAAAAABfEgAAAAAAALcBAAABAAAALSMBAAAAAAC3AQAAAAAAAGcHAAABAAAALZcBAAAAAAC/lwAAAAAAAFcBAAABAAAAVQEjAAAAAAC/oQAAAAAAAAcBAADg////twMAAAAAAAC/dAAAAAAAALcFAAAAAAAAhRAAAOYtAAC3AQAAAQAAAHmi6P8AAAAAVQIBAAAAAAC3AQAAAAAAAFcBAAABAAAAVQEXAAAAAAB5qeD/AAAAABUIFgAAAAAAeWIIAAAAAABVAgUAAAAAAL+RAAAAAAAAv4IAAAAAAACFEAAAlgQAAFUACgAAAAAABQAFAAAAAAB5YQAAAAAAALcDAAABAAAAv5QAAAAAAACFEAAAlAQAAFUABAAAAAAAv5EAAAAAAAC/ggAAAAAAAIUQAACxFwAAhRAAAP////+/AQAAAAAAAIUQAAC0AAAAe3YIAAAAAAB7BgAAAAAAAJUAAAAAAAAAhRAAAOwAAAC/oQAAAAAAAAcBAADQ////v5IAAAAAAAC3AwAAAAAAAIUQAAClAAAAeaHY/wAAAAAVAQEAAAAAAAUAvf8AAAAAhRAAAJ0XAACFEAAA/////3kSCAAAAAAAFQIDAAAAAAB5EQAAAAAAALcDAAABAAAAhRAAAHgEAACVAAAAAAAAAHkSCAAAAAAAFQIEAAAAAAB5EQAAAAAAACcCAAAwAAAAtwMAAAgAAACFEAAAcQQAAJUAAAAAAAAAexrI/wAAAAB5ISgAAAAAAHsa+P8AAAAAeSEgAAAAAAB7GvD/AAAAAHkhGAAAAAAAexro/wAAAAB5IRAAAAAAAHsa4P8AAAAAeSEIAAAAAAB7Gtj/AAAAAHkhAAAAAAAAexrQ/wAAAAC/oQAAAAAAAAcBAADI////v6MAAAAAAAAHAwAA0P///xgCAACI7wEAAAAAAAAAAACFEAAAFSIAAJUAAAAAAAAAlQAAAAAAAAC/JwAAAAAAAHkWAAAAAAAAv3EAAAAAAABnAQAAIAAAAHcBAAAgAAAAtwIAAIAAAAAtEg0AAAAAALcCAAAAAAAAYyr8/wAAAAAlARkA/wcAAL9xAAAAAAAAVwEAAD8AAABHAQAAgAAAAHMa/f8AAAAAdwcAAAYAAABXBwAAHwAAAEcHAADAAAAAc3r8/wAAAAC3AwAAAgAAAAUAMgAAAAAAeWEIAAAAAAB5YhAAAAAAAF0SAwAAAAAAv2EAAAAAAAC3AgAAAQAAAIUQAADbAAAAv2EAAAAAAACFEAAAYf///3lhEAAAAAAADxAAAAAAAABzcAAAAAAAAHlhEAAAAAAABwEAAAEAAAB7FhAAAAAAAAUAJwAAAAAAv3EAAAAAAABnAQAAIAAAAHcBAAAgAAAAJQEOAP//AABXBwAAPwAAAEcHAACAAAAAc3r+/wAAAAC/EgAAAAAAAHcCAAAGAAAAVwIAAD8AAABHAgAAgAAAAHMq/f8AAAAAdwEAAAwAAABXAQAADwAAAEcBAADgAAAAcxr8/wAAAAC3AwAAAwAAAAUAEQAAAAAAVwcAAD8AAABHBwAAgAAAAHN6//8AAAAAvxIAAAAAAAB3AgAAEgAAAEcCAADwAAAAcyr8/wAAAAC/EgAAAAAAAHcCAAAGAAAAVwIAAD8AAABHAgAAgAAAAHMq/v8AAAAAdwEAAAwAAABXAQAAPwAAAEcBAACAAAAAcxr9/wAAAAC3AwAABAAAAL+iAAAAAAAABwIAAPz///+/YQAAAAAAAIUQAACOAAAAtwAAAAAAAACVAAAAAAAAAHkRAAAAAAAAeSMoAAAAAAB7OsD/AAAAAHkkIAAAAAAAe0q4/wAAAAB5JRgAAAAAAHtasP8AAAAAeSAQAAAAAAB7Cqj/AAAAAHkmCAAAAAAAe2qg/wAAAAB5IgAAAAAAAHsqmP8AAAAAexrI/wAAAAB7Ovj/AAAAAHtK8P8AAAAAe1ro/wAAAAB7CuD/AAAAAHtq2P8AAAAAeyrQ/wAAAAC/oQAAAAAAAAcBAADI////v6MAAAAAAAAHAwAA0P///xgCAACI7wEAAAAAAAAAAACFEAAArCEAAJUAAAAAAAAAeREAAAAAAACFEAAAbgAAALcAAAAAAAAAlQAAAAAAAACFEAAA0fn//5UAAAAAAAAAhRAAADIAAACVAAAAAAAAAHkQAAAAAAAAeyEAAAAAAACVAAAAAAAAAHkjEAAAAAAAezEIAAAAAAB5IggAAAAAAHshAAAAAAAAlQAAAAAAAAC/IwAAAAAAAHkSCAAAAAAAeREAAAAAAACFEAAA/xMAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAYzEEAAAAAABjIQAAAAAAAJUAAAAAAAAAvxAAAAAAAACVAAAAAAAAAIUQAACGEgAAlQAAAAAAAAC/NwAAAAAAAL8oAAAAAAAAvxYAAAAAAAC/oQAAAAAAAAcBAADY////twkAAAAAAAC/cgAAAAAAALcDAAAAAAAAhRAAALX+//97mvj/AAAAAHmh4P8AAAAAexrw/wAAAAB5odj/AAAAAHsa6P8AAAAAv6EAAAAAAAAHAQAA6P///7+CAAAAAAAAv3MAAAAAAACFEAAAPgAAAHmh+P8AAAAAexYQAAAAAAB5ofD/AAAAAHsWCAAAAAAAeaHo/wAAAAB7FgAAAAAAAJUAAAAAAAAAvxYAAAAAAAC/IQAAAAAAAL8yAAAAAAAAhRAAAMwCAAB7BggAAAAAALcBAAABAAAAexYAAAAAAACVAAAAAAAAAIUQAADE////lQAAAAAAAAB5IwAAAAAAAHkkCAAAAAAAXUMEAAAAAAC3AgAACgAAAGMhBAAAAAAAtwIAAAEAAAAFAAUAAAAAAL80AAAAAAAABwQAADAAAAB7QgAAAAAAAHsxCAAAAAAAtwIAAAAAAABjIQAAAAAAAJUAAAAAAAAAhRAAANYTAACVAAAAAAAAALcCAAABAAAAeyEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAlQAAAAAAAAC/FgAAAAAAAL+hAAAAAAAABwEAAND///+FEAAAw////3mh4P8AAAAAexr4/wAAAAB5otj/AAAAAHsq8P8AAAAAeaPQ/wAAAAB7Ouj/AAAAAHsayP8AAAAAeyrA/wAAAAB7Orj/AAAAALcEAAAAAAAAe0YAAAAAAAB7FhgAAAAAAHsmEAAAAAAAezYIAAAAAACVAAAAAAAAAHkSEAAAAAAAeRMIAAAAAAAdIwEAAAAAAIUQAACG/v//lQAAAAAAAAC/FgAAAAAAAHsq8P8AAAAADzIAAAAAAAB7Kvj/AAAAAL+hAAAAAAAABwEAAOD///+/ogAAAAAAAAcCAADw////hRAAAA8CAAB5YhAAAAAAAHmn4P8AAAAAeajo/wAAAAC/YQAAAAAAAL+DAAAAAAAAhRAAAJr+//95aRAAAAAAAL+RAAAAAAAAD4EAAAAAAAB7FhAAAAAAAL9hAAAAAAAAhRAAAJD+//8PkAAAAAAAAHliEAAAAAAAH5IAAAAAAAC/AQAAAAAAAL9zAAAAAAAAv4QAAAAAAACFEAAAAgIAAJUAAAAAAAAAvyMAAAAAAAB5EhAAAAAAAIUQAACJ/v//lQAAAAAAAAB5ExAAAAAAAC0yAQAAAAAAeyEQAAAAAACVAAAAAAAAAIUQAAB//v//lQAAAAAAAAC/FwAAAAAAAIUQAAB+/v//vwYAAAAAAAB5dxAAAAAAABUHCgAAAAAAJwcAADAAAAAHBgAAEAAAAL9hAAAAAAAABwEAAPj///+FEAAAPAMAAL9hAAAAAAAAhRAAACcDAAAHBgAAMAAAAAcHAADQ////VQf4/wAAAACVAAAAAAAAAL8mAAAAAAAAvxcAAAAAAAC/YQAAAAAAAIUQAABq/v//ewcAAAAAAAB5YRAAAAAAAHsXCAAAAAAAlQAAAAAAAAC/JgAAAAAAAL8XAAAAAAAAv2EAAAAAAACFEAAAZP7//3sHAAAAAAAAeWEQAAAAAAB7FwgAAAAAAJUAAAAAAAAAvzcAAAAAAAC/KAAAAAAAAL8WAAAAAAAAeWIQAAAAAAC/gwAAAAAAAIUQAABc/v//v2EAAAAAAACFEAAAVv7//3lhEAAAAAAAFQgDAAAAAAAPEAAAAAAAAHNwAAAAAAAABwEAAAEAAAB7FhAAAAAAAJUAAAAAAAAAvyEAAAAAAAAYAgAA6cUBAAAAAAAAAAAAtwMAAAwAAACFEAAAcSQAAJUAAAAAAAAAlQAAAAAAAAC/FgAAAAAAAHlnAAAAAAAAeXEAAAAAAAAVAQYAAQAAAFUBFwAAAAAAeXIQAAAAAAAVAhUAAAAAAHlxCAAAAAAAtwMAAAEAAAAFABEAAAAAAHFxCAAAAAAAtwIAAAIAAAAtEg8AAAAAAHl4EAAAAAAAeYEIAAAAAAB5EgAAAAAAAHmBAAAAAAAAjQAAAAIAAAB5gQgAAAAAAHkSCAAAAAAAFQIDAAAAAAB5ExAAAAAAAHmBAAAAAAAAhRAAAA0DAAB5cRAAAAAAALcCAAAYAAAAtwMAAAgAAACFEAAACQMAAHlhAAAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAFAwAAlQAAAAAAAAC/FwAAAAAAAHl2AAAAAAAAeWEAAAAAAAAVAQkAAAAAAL+jAAAAAAAABwMAAPj///8YAQAAwMMBAAAAAAAAAAAAtwIAABAAAAAYBAAAyO8BAAAAAAAAAAAAhRAAAJ4aAACFEAAA/////79hAAAAAAAAtwIAAP////+FEAAACv///3lxCAAAAAAAvxMAAAAAAAAHAwAAIQAAACUBCwDe////eWIQAAAAAAAtIwwAAAAAAHliCAAAAAAADxIAAAAAAABxJwAAAAAAAHliAAAAAAAABwIAAAEAAAC/YQAAAAAAAIUQAAD9/v//v3AAAAAAAACVAAAAAAAAAL8yAAAAAAAAhRAAAN0aAACFEAAA/////78xAAAAAAAAhRAAALEaAACFEAAA/////78nAAAAAAAAvxgAAAAAAAB5hgAAAAAAAHlhAAAAAAAAFQEJAAAAAAC/owAAAAAAAAcDAAD4////GAEAAMDDAQAAAAAAAAAAALcCAAAQAAAAGAQAAMjvAQAAAAAAAAAAAIUQAAB4GgAAhRAAAP////+/YQAAAAAAALcCAAD/////hRAAAOT+//95gQgAAAAAAL8TAAAAAAAABwMAACEAAAAlAQoA3v///3liEAAAAAAALSMLAAAAAAB5YggAAAAAAA8SAAAAAAAAc3IAAAAAAAB5YgAAAAAAAAcCAAABAAAAv2EAAAAAAACFEAAA1/7//5UAAAAAAAAAvzIAAAAAAACFEAAAuBoAAIUQAAD/////vzEAAAAAAACFEAAAjBoAAIUQAAD/////GAMAAEjwAQAAAAAAAAAAAHs6APAAAAAAtwMAAAIAAAB7OgjwAAAAAL+lAAAAAAAAGAMAANvFAQAAAAAAAAAAALcEAAAFAAAAhRAAAPj4//+VAAAAAAAAAL83AAAAAAAAvygAAAAAAAC/FgAAAAAAAL+BAAAAAAAAv3IAAAAAAAAYAwAA4MUBAAAAAAAAAAAAtwQAAAMAAACFEAAAjAEAABUAAgAAAAAAtwEAAAAAAAAFAAsAAAAAAL+BAAAAAAAAv3IAAAAAAAAYAwAA48UBAAAAAAAAAAAAtwQAAAYAAACFEAAAgwEAAFUAAQAAAAAABQACAAAAAAC3AQAAAQAAAAUAAQAAAAAAtwEAAAIAAABzFgEAAAAAALcBAAAAAAAAcxYAAAAAAACVAAAAAAAAAL8SAAAAAAAAv6EAAAAAAAAHAQAAKP///4UQAACFDwAAeaFA/wAAAAB7GvD+AAAAAHmhOP8AAAAAexro/gAAAAB5oTD/AAAAAHsa4P4AAAAAeaZI/wAAAAB5p1D/AAAAAL+hAAAAAAAABwEAAND+//+/ogAAAAAAAAcCAADg/v//hRAAAED///95qdj+AAAAAHmo0P4AAAAAv6EAAAAAAAAHAQAAKP///79iAAAAAAAAv3MAAAAAAACFEAAAlPP//3mhKP8AAAAAVQELAAEAAAB5oTD/AAAAAHsa6P8AAAAAv6MAAAAAAAAHAwAA6P///xgBAACixQEAAAAAAAAAAAC3AgAAKwAAABgEAAAo8AEAAAAAAAAAAACFEAAAFhoAAIUQAAD/////eaFI/wAAAAB7GhD/AAAAAHmhUP8AAAAAexoY/wAAAAB5oVj/AAAAAHsaIP8AAAAAeaEw/wAAAAB7Gvj+AAAAAHmiOP8AAAAAeyoA/wAAAAB5o0D/AAAAAHs6CP8AAAAAezpw/wAAAAB7Kmj/AAAAAHsaYP8AAAAAGAEAAM3FAQAAAAAAAAAAALcCAAAOAAAAhRAAAP////+/oQAAAAAAAAcBAADA/v//v6IAAAAAAAAHAgAAYP///4UQAAAM////eaLI/gAAAAB5ocD+AAAAAIUQAAD/////JwkAADAAAAC/gQAAAAAAAA+RAAAAAAAAexqA/wAAAAB7inj/AAAAAL+hAAAAAAAABwEAACj///+/ogAAAAAAAAcCAAB4////hRAAAJv+//95ozD/AAAAAGGhKP8AAAAAVQEHAAEAAABhoiz/AAAAAL+hAAAAAAAABwEAAHD+//+FEAAAaf7//2GmdP4AAAAAYadw/gAAAAAFACEAAAAAAHk3EAAAAAAAeXIQAAAAAAAHAgAAAQAAAGUCCQAAAAAAv6MAAAAAAAAHAwAAKP///xgBAACKxQEAAAAAAAAAAAC3AgAAGAAAABgEAADo7wEAAAAAAAAAAACFEAAA2hkAAIUQAAD/////v3YAAAAAAAAHBgAAEAAAAL9hAAAAAAAAhRAAAEX+//95eCAAAAAAAHlyEAAAAAAABwIAAP////+/YQAAAAAAAIUQAABA/v//FQgdACEAAAAYAQAA4MMBAAAAAAAAAAAAtwIAACAAAACFEAAA/////7+hAAAAAAAABwEAALj+//+3AgAAAwAAAIUQAABH/v//Yaa8/gAAAABhp7j+AAAAAL+oAAAAAAAABwgAAGD///+/gQAAAAAAAIUQAAC+/v//v4EAAAAAAACFEAAAnP3//7+oAAAAAAAABwgAABD///+/gQAAAAAAAIUQAAC4/v//v4EAAAAAAACFEAAAlv3//7cIAAAAAAAAFQefAA4AAAC/cQAAAAAAAL9iAAAAAAAAhRAAADn+//+/CAAAAAAAAAUAmgAAAAAAe2qI/wAAAAC3BwAAAAAAAHt6kP8AAAAAv6EAAAAAAAAHAQAAiP///4UQAAAC////cwqe/wAAAAAYAQAAeMMBAAAAAAAAAAAAtwIAAAQAAACFEAAA/////7+hAAAAAAAABwEAAJ7///97GuD/AAAAAHt6+P8AAAAAe3rw/wAAAAC3CAAAAQAAAHuK6P8AAAAAv6EAAAAAAAAHAQAAqP7//7+iAAAAAAAABwIAAOD///8YAwAAYHYAAAAAAAAAAAAAhRAAAMIBAAC/oQAAAAAAAAcBAADQ////expI/wAAAAB7ejj/AAAAAHuKUP8AAAAAe4ow/wAAAAAYCQAAuO8BAAAAAAAAAAAAe5oo/wAAAAB5obD+AAAAAHsa2P8AAAAAeaGo/gAAAAB7GtD/AAAAAL+hAAAAAAAABwEAAOj///+/ogAAAAAAAAcCAAAo////hRAAAHH9//8VAAkAAAAAAL+jAAAAAAAABwMAACj///8YAQAAU8UBAAAAAAAAAAAAtwIAADcAAAAYBAAACPABAAAAAAAAAAAAhRAAAH4ZAACFEAAA/////7+hAAAAAAAABwEAAOj///+FEAAATf7//3mh+P8AAAAAexo4/wAAAAB5ofD/AAAAAHsaMP8AAAAAeaHo/wAAAAB7Gij/AAAAAL+hAAAAAAAABwEAAJj+//+/pgAAAAAAAAcGAAAo////v2IAAAAAAACFEAAAff7//3mioP4AAAAAeaGY/gAAAACFEAAA/////79hAAAAAAAAhRAAAGb+//+/YQAAAAAAAIUQAABE/f//caKe/wAAAAAHAgAAAQAAAL+mAAAAAAAABwYAAIj///+/YQAAAAAAAIUQAADc/v//v2EAAAAAAACFEAAAtf7//3MKn/8AAAAAGAEAAEjEAQAAAAAAAAAAALcCAAAIAAAAhRAAAP////+/oQAAAAAAAAcBAACf////exrg/wAAAAB7evj/AAAAAHt68P8AAAAAe4ro/wAAAAC/oQAAAAAAAAcBAACI/v//v6IAAAAAAAAHAgAA4P///xgDAABgdgAAAAAAAAAAAACFEAAAdgEAAL+hAAAAAAAABwEAAND///97Gkj/AAAAAHt6OP8AAAAAe4pQ/wAAAAB7ijD/AAAAAHuaKP8AAAAAeaGQ/gAAAAB7Gtj/AAAAAHmhiP4AAAAAexrQ/wAAAAC/oQAAAAAAAAcBAADo////v6IAAAAAAAAHAgAAKP///4UQAAAn/f//FQABAAAAAAAFALX/AAAAAL+hAAAAAAAABwEAAOj///+FEAAAC/7//3mh+P8AAAAAexo4/wAAAAB5ofD/AAAAAHsaMP8AAAAAeaHo/wAAAAB7Gij/AAAAAL+hAAAAAAAABwEAAHj+//+/pgAAAAAAAAcGAAAo////v2IAAAAAAACFEAAAO/7//3migP4AAAAAeaF4/gAAAACFEAAA/////79hAAAAAAAAhRAAACT+//+/YQAAAAAAAIUQAAAC/f//v6YAAAAAAAAHBgAAYP///79hAAAAAAAAhRAAAB7+//+/YQAAAAAAAIUQAAD8/P//v6YAAAAAAAAHBgAAEP///79hAAAAAAAAhRAAABj+//+/YQAAAAAAAIUQAAD2/P//twgAAAAAAAC/pgAAAAAAAAcGAADg/v//v2EAAAAAAACFEAAAE/7//79hAAAAAAAAhRAAAPX8//+/gAAAAAAAAJUAAAAAAAAAeSMAAAAAAAB7MQAAAAAAAHkiCAAAAAAAHzIAAAAAAAB7IQgAAAAAAJUAAAAAAAAAvzUAAAAAAAC/IwAAAAAAAHs6UP8AAAAAe0pY/wAAAABdQwMAAAAAAL9SAAAAAAAAhRAAAMcmAACVAAAAAAAAAL+hAAAAAAAABwEAAFD///97GsD/AAAAAL+hAAAAAAAABwEAAFj///97Gsj/AAAAALcBAAAIAAAAexrw/wAAAAC3AQAAAQAAAHsa2P8AAAAAGAEAAJjwAQAAAAAAAAAAAHsa0P8AAAAAtwEAAAAAAAB7Gvj/AAAAAHsa4P8AAAAAv6EAAAAAAAAHAQAAQP///7+iAAAAAAAABwIAAMD///8YAwAAoHUAAAAAAAAAAAAAhRAAABQBAAB5p0D/AAAAAHmoSP8AAAAAv6EAAAAAAAAHAQAAMP///7+iAAAAAAAABwIAAMj///8YAwAAoHUAAAAAAAAAAAAAhRAAAAsBAAB5qTD/AAAAAHmmOP8AAAAAv6EAAAAAAAAHAQAAIP///7+iAAAAAAAABwIAAND///8YAwAAUGUBAAAAAAAAAAAAhRAAAAgBAAB7aqj/AAAAAHuaoP8AAAAAe4qY/wAAAAB7epD/AAAAAL+hAAAAAAAABwEAAJD///97GoD/AAAAALcBAAAAAAAAexpw/wAAAAC3AQAAAwAAAHsaiP8AAAAAexpo/wAAAAAYAQAAaPABAAAAAAAAAAAAexpg/wAAAAB5oSj/AAAAAHsauP8AAAAAeaEg/wAAAAB7GrD/AAAAAL+hAAAAAAAABwEAAGD///8YAgAAqPABAAAAAAAAAAAAhRAAAHMlAACFEAAA/////78lAAAAAAAAtwAAAAAAAABdRQkAAAAAALcAAAABAAAAHTEHAAAAAAC/MgAAAAAAAL9TAAAAAAAAhRAAAIcmAAC/AQAAAAAAALcAAAABAAAAFQEBAAAAAAC3AAAAAAAAAFcAAAABAAAAlQAAAAAAAAC/JAAAAAAAAA80AAAAAAAAe0EIAAAAAAB7IQAAAAAAAJUAAAAAAAAAvxYAAAAAAAB5YRgAAAAAABUBAgAAAAAAv2AAAAAAAACVAAAAAAAAAHlhEAAAAAAAexrg/wAAAAB5YwgAAAAAAHs62P8AAAAAeWQAAAAAAAB7StD/AAAAAHtKuP8AAAAAezrA/wAAAAB7Gsj/AAAAAHsa+P8AAAAAezrw/wAAAAB7Suj/AAAAAL+jAAAAAAAABwMAAOj///+/IQAAAAAAAL8yAAAAAAAAhRAAADX2//+/BwAAAAAAAL9hAAAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADsAAAAv3YAAAAAAAAFAOb/AAAAAJUAAAAAAAAAeyq4/wAAAAB7GrD/AAAAAL+hAAAAAAAABwEAAKD///+/ogAAAAAAAAcCAACw////GAMAAHh2AAAAAAAAAAAAAIUQAACyAAAAtwEAAAEAAAB7Guj/AAAAAL+hAAAAAAAABwEAAPD///97GuD/AAAAALcBAAAAAAAAexrQ/wAAAAC3AQAAAgAAAHsayP8AAAAAGAEAAPDwAQAAAAAAAAAAAHsawP8AAAAAeaGo/wAAAAB7Gvj/AAAAAHmhoP8AAAAAexrw/wAAAAC/oQAAAAAAAAcBAADA////hRAAAEYAAACVAAAAAAAAAHs6qP8AAAAAeyqg/wAAAAB7Gpj/AAAAAL+hAAAAAAAABwEAAIj///+/ogAAAAAAAAcCAACY////GAMAAJCgAQAAAAAAAAAAAIUQAACRAAAAeaaI/wAAAAB5p5D/AAAAAL+hAAAAAAAABwEAAHj///+/ogAAAAAAAAcCAACg////GAMAABhZAAAAAAAAAAAAAIUQAACLAAAAe3ro/wAAAAB7auD/AAAAAL+hAAAAAAAABwEAAOD///97GtD/AAAAALcBAAAAAAAAexrA/wAAAAC3AQAAAgAAAHsa2P8AAAAAexq4/wAAAAAYAQAAEPEBAAAAAAAAAAAAexqw/wAAAAB5oYD/AAAAAHsa+P8AAAAAeaF4/wAAAAB7GvD/AAAAAL+hAAAAAAAABwEAALD///+FEAAAHgAAAJUAAAAAAAAAeyq4/wAAAAB7GrD/AAAAAL+hAAAAAAAABwEAAKD///+/ogAAAAAAAAcCAACw////GAMAAHh2AAAAAAAAAAAAAIUQAABtAAAAtwEAAAEAAAB7Guj/AAAAAL+hAAAAAAAABwEAAPD///97GuD/AAAAALcBAAAAAAAAexrQ/wAAAAC3AQAAAgAAAHsayP8AAAAAGAEAADDxAQAAAAAAAAAAAHsawP8AAAAAeaGo/wAAAAB7Gvj/AAAAAHmhoP8AAAAAexrw/wAAAAC/oQAAAAAAAAcBAADA////hRAAAAEAAACVAAAAAAAAAHsaoP8AAAAAtwYAAAAAAAB7arj/AAAAAHtqsP8AAAAAtwcAAAEAAAB7eqj/AAAAAL+hAAAAAAAABwEAAJD///+/ogAAAAAAAAcCAACg////GAMAAEh2AAAAAAAAAAAAAIUQAABJAAAAv6EAAAAAAAAHAQAA8P///3sa4P8AAAAAe2rQ/wAAAAB7euj/AAAAAHt6yP8AAAAAGAEAAMDwAQAAAAAAAAAAAHsawP8AAAAAeaGY/wAAAAB7Gvj/AAAAAHmhkP8AAAAAexrw/wAAAAC/oQAAAAAAAAcBAACo////v6IAAAAAAAAHAgAAwP///4UQAAD4+///FQAJAAAAAAC/owAAAAAAAAcDAADA////GAEAAKHGAQAAAAAAAAAAALcCAAA3AAAAGAQAANDwAQAAAAAAAAAAAIUQAAAFGAAAhRAAAP////+/oQAAAAAAAAcBAACo////hRAAANT8//95obj/AAAAAHsa0P8AAAAAeaGw/wAAAAB7Gsj/AAAAAHmhqP8AAAAAexrA/wAAAAC/oQAAAAAAAAcBAADA////hRAAAHwLAACVAAAAAAAAAL8mAAAAAAAAeRcAAAAAAAC/YQAAAAAAAIUQAAC3IQAAVQAIAAAAAAC/YQAAAAAAAIUQAAC4IQAAVQABAAAAAAAFAAgAAAAAAL9xAAAAAAAAv2IAAAAAAACFEAAA5RMAAAUABwAAAAAAv3EAAAAAAAC/YgAAAAAAAIUQAADeEwAABQADAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAAEolAACVAAAAAAAAAHkRAAAAAAAAhRAAAN8dAACVAAAAAAAAAHkRAAAAAAAAhRAAABolAACVAAAAAAAAAL8jAAAAAAAAeRIIAAAAAAB5EQAAAAAAAIUQAAAwIwAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAC/FgAAAAAAAHlhAAAAAAAAeRIAAAAAAAAHAgAA/////4UQAAA5/P//eWEAAAAAAAB5EgAAAAAAAFUCCgAAAAAAeRIIAAAAAAAHAQAACAAAAAcCAAD/////hRAAADL8//95YQAAAAAAAHkSCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAABYAAACVAAAAAAAAAL8WAAAAAAAAeWEAAAAAAAB5EgAAAAAAAAcCAAD/////hRAAACb8//95YQAAAAAAAHkSAAAAAAAAVQIKAAAAAAB5EggAAAAAAAcBAAAIAAAABwIAAP////+FEAAAH/z//3lhAAAAAAAAeRIIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAAwAAAJUAAAAAAAAAhRAAANwSAACVAAAAAAAAAIUQAADdEgAAlQAAAAAAAACFEAAA4BIAAJUAAAAAAAAAhRAAANYSAACVAAAAAAAAAHkUAAAAAAAAFQQEAAAAAAAVBAYAAQAAAHkRCAAAAAAAtwQAAAIAAAAFAAUAAAAAAHkRCAAAAAAAtwQAAAMAAAAFAAIAAAAAAHkRCAAAAAAAtwQAAAEAAABzSuj/AAAAAHsa8P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAADUCgAAlQAAAAAAAAB5EhAAAAAAAHkTCAAAAAAAHSMBAAAAAACFEAAAPAgAAJUAAAAAAAAAvycAAAAAAAC/FgAAAAAAAHlyEAAAAAAAeXMIAAAAAAAdIwMAAAAAAL9xAAAAAAAAhRAAADQIAAB5cwgAAAAAAHlyAAAAAAAAv6EAAAAAAAAHAQAA8P///4UQAAAsCAAAeaHw/wAAAAB5ovj/AAAAAHsmCAAAAAAAexYAAAAAAACVAAAAAAAAAL8WAAAAAAAAeyrw/wAAAAAPMgAAAAAAAHsq+P8AAAAAv6EAAAAAAAAHAQAA4P///7+iAAAAAAAABwIAAPD///+FEAAAZQAAAHliEAAAAAAAeafg/wAAAAB5qOj/AAAAAL9hAAAAAAAAv4MAAAAAAACFEAAAPQgAAHlpEAAAAAAAv5EAAAAAAAAPgQAAAAAAAHsWEAAAAAAAv2EAAAAAAACFEAAANQgAAA+QAAAAAAAAeWIQAAAAAAAfkgAAAAAAAL8BAAAAAAAAv3MAAAAAAAC/hAAAAAAAAIUQAABYAAAAlQAAAAAAAAC/IwAAAAAAAHkSEAAAAAAAhRAAACwIAACVAAAAAAAAAHkREAAAAAAAtwAAAAEAAAAVAQEAAAAAALcAAAAAAAAAlQAAAAAAAAB5ExAAAAAAAC0yAQAAAAAAeyEQAAAAAACVAAAAAAAAAIUQAAAfCAAAlQAAAAAAAAC/JgAAAAAAAL8XAAAAAAAAv2EAAAAAAACFEAAAGggAAHsHAAAAAAAAeWEQAAAAAAB7FwgAAAAAAJUAAAAAAAAAvyMAAAAAAAB5EggAAAAAAHkRAAAAAAAAhRAAALwPAACVAAAAAAAAAL8VAAAAAAAAtwEAAAEAAAC3AAAAAQAAAB1CAQAAAAAAtwAAAAAAAAAVBAEAAAAAALcBAAAAAAAATwEAAAAAAABXAQAAAQAAAFUBCQAAAAAAPSQGAAAAAAC/UAAAAAAAAA9AAAAAAAAAcQAAAAAAAABnAAAAOAAAAMcAAAA4AAAAZQACAL////+3AAAAAAAAAAUAGAAAAAAAeyrw/wAAAAB7Wuj/AAAAAHtK+P8AAAAAVQENAAAAAAA9JAYAAAAAAL9RAAAAAAAAD0EAAAAAAABxEQAAAAAAAGcBAAA4AAAAxwEAADgAAABlAQYAv////7+hAAAAAAAABwEAAOj///+/ogAAAAAAAAcCAAD4////hRAAAAkAAACFEAAA/////78xAAAAAAAAv0IAAAAAAAC/UwAAAAAAAIUQAABdAAAAvwEAAAAAAAC3AAAAAQAAABUB5v8AAAAAlQAAAAAAAAB5JAAAAAAAAHkSCAAAAAAAeREAAAAAAAC3AwAAAAAAAIUQAACkFQAAhRAAAP////97MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB5IwAAAAAAAHsxAAAAAAAAeSIIAAAAAAAfMgAAAAAAAHshCAAAAAAAlQAAAAAAAAC/NQAAAAAAAL8jAAAAAAAAezpQ/wAAAAB7Slj/AAAAAF1DAwAAAAAAv1IAAAAAAACFEAAAwiQAAJUAAAAAAAAAv6EAAAAAAAAHAQAAUP///3sawP8AAAAAv6EAAAAAAAAHAQAAWP///3sayP8AAAAAtwEAAAgAAAB7GvD/AAAAALcBAAABAAAAexrY/wAAAAAYAQAAgPEBAAAAAAAAAAAAexrQ/wAAAAC3AQAAAAAAAHsa+P8AAAAAexrg/wAAAAC/oQAAAAAAAAcBAABA////v6IAAAAAAAAHAgAAwP///xgDAAAggAAAAAAAAAAAAACFEAAAVwAAAHmnQP8AAAAAeahI/wAAAAC/oQAAAAAAAAcBAAAw////v6IAAAAAAAAHAgAAyP///xgDAAAggAAAAAAAAAAAAACFEAAATgAAAHmpMP8AAAAAeaY4/wAAAAC/oQAAAAAAAAcBAAAg////v6IAAAAAAAAHAgAA0P///xgDAABQZQEAAAAAAAAAAACFEAAATgAAAHtqqP8AAAAAe5qg/wAAAAB7ipj/AAAAAHt6kP8AAAAAv6EAAAAAAAAHAQAAkP///3sagP8AAAAAtwEAAAAAAAB7GnD/AAAAALcBAAADAAAAexqI/wAAAAB7Gmj/AAAAABgBAABQ8QEAAAAAAAAAAAB7GmD/AAAAAHmhKP8AAAAAexq4/wAAAAB5oSD/AAAAAHsasP8AAAAAv6EAAAAAAAAHAQAAYP///xgCAACQ8QEAAAAAAAAAAACFEAAAbiMAAIUQAAD/////vyUAAAAAAAC3AAAAAAAAAF1FCQAAAAAAtwAAAAEAAAAdMQcAAAAAAL8yAAAAAAAAv1MAAAAAAACFEAAAgiQAAL8BAAAAAAAAtwAAAAEAAAAVAQEAAAAAALcAAAAAAAAAVwAAAAEAAACVAAAAAAAAAL8kAAAAAAAADzQAAAAAAAB7QQgAAAAAAHshAAAAAAAAlQAAAAAAAACVAAAAAAAAAL8mAAAAAAAAeRcAAAAAAAC/YQAAAAAAAIUQAABnIAAAVQAIAAAAAAC/YQAAAAAAAIUQAABoIAAAVQABAAAAAAAFAAgAAAAAAL9xAAAAAAAAv2IAAAAAAACFEAAAlRIAAAUABwAAAAAAv3EAAAAAAAC/YgAAAAAAAIUQAACOEgAABQADAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAAPojAACVAAAAAAAAAHkRAAAAAAAAhRAAAI8cAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsayP8AAAAAeSEoAAAAAAB7Gvj/AAAAAHkhIAAAAAAAexrw/wAAAAB5IRgAAAAAAHsa6P8AAAAAeSEQAAAAAAB7GuD/AAAAAHkhCAAAAAAAexrY/wAAAAB5IQAAAAAAAHsa0P8AAAAAv6EAAAAAAAAHAQAAyP///7+jAAAAAAAABwMAAND///8YAgAAqPEBAAAAAAAAAAAAhRAAAH8cAACVAAAAAAAAAJUAAAAAAAAAtwIAAAEAAAB7IQgAAAAAAHshAAAAAAAAlQAAAAAAAAC/JwAAAAAAAHkWAAAAAAAAv3EAAAAAAABnAQAAIAAAAHcBAAAgAAAAtwIAAIAAAAAtEhgAAAAAALcCAAAAAAAAYyr8/wAAAAC3AgAAAAgAAC0SIwAAAAAAv3EAAAAAAABnAQAAIAAAAHcBAAAgAAAAtwIAAAAAAQAtEgEAAAAAAAUAJwAAAAAAVwcAAD8AAABHBwAAgAAAAHN6/v8AAAAAvxIAAAAAAAB3AgAABgAAAFcCAAA/AAAARwIAAIAAAABzKv3/AAAAAHcBAAAMAAAAVwEAAA8AAABHAQAA4AAAAHMa/P8AAAAAtwMAAAMAAAAFACoAAAAAAHlhCAAAAAAAeWIQAAAAAABdEgMAAAAAAL9hAAAAAAAAtwIAAAEAAACFEAAA5f7//79hAAAAAAAAhRAAABAHAAB5YRAAAAAAAA8QAAAAAAAAc3AAAAAAAAB5YRAAAAAAAAcBAAABAAAAexYQAAAAAAAFAB8AAAAAAL9xAAAAAAAAVwEAAD8AAABHAQAAgAAAAHMa/f8AAAAAdwcAAAYAAABXBwAAHwAAAEcHAADAAAAAc3r8/wAAAAC3AwAAAgAAAAUAEQAAAAAAVwcAAD8AAABHBwAAgAAAAHN6//8AAAAAvxIAAAAAAAB3AgAAEgAAAEcCAADwAAAAcyr8/wAAAAC/EgAAAAAAAHcCAAAGAAAAVwIAAD8AAABHAgAAgAAAAHMq/v8AAAAAdwEAAAwAAABXAQAAPwAAAEcBAACAAAAAcxr9/wAAAAC3AwAABAAAAL+iAAAAAAAABwIAAPz///+/YQAAAAAAAIUQAACg/v//twAAAAAAAACVAAAAAAAAAHkRAAAAAAAAeSMoAAAAAAB7OsD/AAAAAHkkIAAAAAAAe0q4/wAAAAB5JRgAAAAAAHtasP8AAAAAeSAQAAAAAAB7Cqj/AAAAAHkmCAAAAAAAe2qg/wAAAAB5IgAAAAAAAHsqmP8AAAAAexrI/wAAAAB7Ovj/AAAAAHtK8P8AAAAAe1ro/wAAAAB7CuD/AAAAAHtq2P8AAAAAeyrQ/wAAAAC/oQAAAAAAAAcBAADI////v6MAAAAAAAAHAwAA0P///xgCAACo8QEAAAAAAAAAAACFEAAADxwAAJUAAAAAAAAAeREAAAAAAACFEAAAgP7//7cAAAAAAAAAlQAAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAL8QAAAAAAAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAC/EAAAAAAAAJUAAAAAAAAAYzEEAAAAAABjIQAAAAAAAJUAAAAAAAAAvycAAAAAAAC/FgAAAAAAAL+hAAAAAAAABwEAAMD///+/MgAAAAAAAL9DAAAAAAAAhRAAAIoTAAB5ocD/AAAAABUBBwABAAAAeaHI/wAAAAB5otD/AAAAAHsmEAAAAAAAexYIAAAAAAC3AQAAAAAAAHsWAAAAAAAABQAsAAAAAAB5cggAAAAAAHlzEAAAAAAAPTIDAAAAAAC/MQAAAAAAAIUQAAD/FQAAhRAAAP////95cgAAAAAAAL+hAAAAAAAABwEAALD///+FEAAAIv///7cDAAAAAAAAtwcAAAEAAAB5obj/AAAAAHmksP8AAAAAtwIAAAEAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFABAAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BDAAAAAAAtwEAAA4AAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAAC6BwAAe3YAAAAAAAB7BggAAAAAAAUACQAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQDp/woAAAC3BQAAAAAAAAUA5/8AAAAAlQAAAAAAAAC/FgAAAAAAAHlnAAAAAAAAeXEAAAAAAAAVAQYAAQAAAFUBFwAAAAAAeXIQAAAAAAAVAhUAAAAAAHlxCAAAAAAAtwMAAAEAAAAFABEAAAAAAHFxCAAAAAAAtwIAAAIAAAAtEg8AAAAAAHl4EAAAAAAAeYEIAAAAAAB5EgAAAAAAAHmBAAAAAAAAjQAAAAIAAAB5gQgAAAAAAHkSCAAAAAAAFQIDAAAAAAB5ExAAAAAAAHmBAAAAAAAAhRAAAO79//95cRAAAAAAALcCAAAYAAAAtwMAAAgAAACFEAAA6v3//3lhAAAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADm/f//lQAAAAAAAAC3BAAAAAAAAHtBEAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAvzgAAAAAAAC/JwAAAAAAAL8WAAAAAAAAtwIAAAAAAAB5cwgAAAAAAHl5EAAAAAAAv5QAAAAAAAA9OQ8AAAAAAHlxAAAAAAAAv5QAAAAAAAAFAAMAAAAAAAcEAAABAAAAe0cQAAAAAAAdQykAAAAAAL8SAAAAAAAAD0IAAAAAAABxIgAAAAAAABgFAADD0QEAAAAAAAAAAAAPJQAAAAAAALcCAAABAAAAcVUAAAAAAAAVBfT/AAAAAB00HwAAAAAAVQIBAAAAAAAFAJgAAAAAAHlyAAAAAAAAvyEAAAAAAAAPQQAAAAAAAHERAAAAAAAAFQEHAFwAAAAVATMAIgAAAL9FAAAAAAAABwUAAAEAAAB7VxAAAAAAAC1DVQAAAAAAv1EAAAAAAAAFAJYAAAAAAC1JkAAAAAAALTSTAAAAAAAPkgAAAAAAAB+UAAAAAAAAv4EAAAAAAAC/QwAAAAAAAIUQAADg/f//eXEQAAAAAAAHAQAAAQAAAHsXEAAAAAAAv3EAAAAAAAC/ggAAAAAAAIUQAABrAwAAFQDP/wAAAAC3AQAAAQAAAHsWAAAAAAAABQBnAAAAAAB5cgAAAAAAAL+hAAAAAAAABwEAAKj///+FEAAAnv7//7cDAAAAAAAAtwcAAAEAAAB5obD/AAAAAHmkqP8AAAAAtwIAAAEAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFAAYAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BAgAAAAAAtwEAAAQAAAAFAEsAAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA8/8KAAAAtwUAAAAAAAAFAPH/AAAAAL+BAAAAAAAAhRAAANn9//95dRAAAAAAAC1ZaAAAAAAAeXIIAAAAAAAtJWoAAAAAAHlzAAAAAAAAv1QAAAAAAAAflAAAAAAAAA+TAAAAAAAAVQBCAAAAAAC/gQAAAAAAAL8yAAAAAAAAv0MAAAAAAACFEAAAq/3//3lxEAAAAAAABwEAAAEAAAB7FxAAAAAAAL+hAAAAAAAABwEAAMj///+/ggAAAAAAAIUQAADQ/f//eaTQ/wAAAAB5o8j/AAAAAL+hAAAAAAAABwEAAOj///+/cgAAAAAAAIUQAAAu////twIAAAEAAAB5ofD/AAAAAHmj6P8AAAAAFQM8AAEAAAB5ovj/AAAAAHsmGAAAAAAAexYQAAAAAAC3AgAAAAAAALcBAAABAAAABQA2AAAAAAC/oQAAAAAAAAcBAAC4////v1MAAAAAAACFEAAAXP7//7cDAAAAAAAAtwcAAAEAAAB5ocD/AAAAAHmkuP8AAAAAtwIAAAEAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFAAYAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BAgAAAAAAtwEAAA8AAAAFAAkAAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA8/8KAAAAtwUAAAAAAAAFAPH/AAAAAHsa6P8AAAAAeaHY/wAAAAB7GvD/AAAAAHmh4P8AAAAAexr4/wAAAAC/oQAAAAAAAAcBAADo////hRAAAOoGAAB7dgAAAAAAAHsGCAAAAAAAlQAAAAAAAAAHBQAAAQAAAHtXEAAAAAAAv6EAAAAAAAAHAQAA6P///79yAAAAAAAAhRAAAPf+//+3AgAAAQAAAHmh8P8AAAAAeaPo/wAAAAAVAwUAAQAAAHmi+P8AAAAAeyYYAAAAAAB7FhAAAAAAALcBAAAAAAAAtwIAAAAAAAB7JgAAAAAAAHsWCAAAAAAABQDt/wAAAAAYAQAA2PEBAAAAAAAAAAAAv0IAAAAAAACFEAAAWSEAAIUQAAD/////v5EAAAAAAAC/QgAAAAAAAIUQAAAgFQAAhRAAAP////+/QQAAAAAAAL8yAAAAAAAAhRAAAPMUAACFEAAA/////7+RAAAAAAAAv1IAAAAAAACFEAAAGBUAAIUQAAD/////v1EAAAAAAACFEAAA7BQAAIUQAAD/////vxYAAAAAAAAYCAAAASAAAAAAAAAAAAAEBQAGAAAAAAAVBEYAEwAAALcFAAABAAAAb0UAAAAAAABXBQAAERAFAFUFAQAAAAAABQAwAAAAAAC3AgAAAAAAAHlkCAAAAAAAeWMQAAAAAAA9QxAAAAAAAHlhAAAAAAAABQAFAAAAAAAHAwAAAQAAAHs2EAAAAAAAtwIAAAAAAAAtNAEAAAAAAAUACQAAAAAAvxIAAAAAAAAPMgAAAAAAAHEiAAAAAAAAGAUAAMPRAQAAAAAAAAAAAA8lAAAAAAAAtwIAAAEAAABxVQAAAAAAABUF8v8AAAAAHUOVAAAAAABVAgEAAAAAAAUA7AEAAAAAeWIAAAAAAAC/IQAAAAAAAA8xAAAAAAAAcREAAAAAAAAVAQQAXAAAABUBwgAiAAAAPTTFAAAAAAC/MQAAAAAAAAUA6QEAAAAAvzUAAAAAAAAHBQAAAQAAAHtWEAAAAAAALVQDAAAAAAAtNJIAAAAAAL9RAAAAAAAABQDiAQAAAAC/IQAAAAAAAA9RAAAAAAAAcREAAAAAAAAHAwAAAgAAAHs2EAAAAAAAvxQAAAAAAAAHBAAAnv///yUEAQATAAAABQDK/wAAAAAHAQAA3v///yUBBAA6AAAAtwQAAAEAAABvFAAAAAAAAF+EAAAAAAAAVQTK/wAAAAC/oQAAAAAAAAcBAAA4////hRAAAND9//+3AwAAAAAAALcCAAABAAAAeaFA/wAAAAB5pDj/AAAAAB0UVAAAAAAAtwIAAAEAAAC3BQAAAAAAAAUAUwAAAAAAv6EAAAAAAAAHAQAAyP///79iAAAAAAAAhRAAAMcBAABpp8j/AAAAABUHtgABAAAAaanK/wAAAAC/kQAAAAAAAFcBAAAA/AAAFQEHAADYAABVATsAANwAAHliCAAAAAAAeWMQAAAAAAA9MrAAAAAAAL8xAAAAAAAAhRAAAJAUAACFEAAA/////3liCAAAAAAAeWMQAAAAAAAtMgIAAAAAAD0y9QAAAAAABQD4/wAAAAB5ZAAAAAAAAL9BAAAAAAAADzEAAAAAAABxEQAAAAAAAL81AAAAAAAABwUAAAEAAAB7VhAAAAAAABUBAQBcAAAABQASAQAAAAAtUg0AAAAAAL+hAAAAAAAABwEAAIj///+/QgAAAAAAAL9TAAAAAAAAhRAAAKP9//+3AwAAAAAAALcCAAABAAAAeaGQ/wAAAAB5pIj/AAAAAB0ULwEAAAAAtwIAAAEAAAC3BQAAAAAAAAUAMwAAAAAAv0EAAAAAAAAPUQAAAAAAAHERAAAAAAAABwMAAAIAAAB7NhAAAAAAABUBAQB1AAAABQAzAQAAAAC/oQAAAAAAAAcBAADo////v2IAAAAAAACFEAAAkwEAAGmh6P8AAAAAFQFWAQEAAABpoer/AAAAAL8SAAAAAAAAVwIAAAD8AAAVAgEAANwAAAUAUwEAAAAABwEAAAAkAABXAQAA//8AAAcJAAAAKAAAVwkAAP//AABnCQAACgAAAE8ZAAAAAAAABwkAAAAAAQAlCQIA//8QAFcJAAAA+P8HVQl2/wDYAAB5YggAAAAAAHljEAAAAAAAPTKZAAAAAAAFAMH/AAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BAgAAAAAAtwEAAAsAAAAFAK0AAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA8/8KAAAAtwUAAAAAAAAFAPH/AAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAB1B+QAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQD1/woAAAC3BQAAAAAAAAUA8/8AAAAAeWIAAAAAAAC/oQAAAAAAAAcBAAAY////v0MAAAAAAACFEAAAWv3//7cDAAAAAAAAtwIAAAEAAAB5oSD/AAAAAHmkGP8AAAAAHRQgAAAAAAC3AgAAAQAAALcFAAAAAAAABQAfAAAAAAC/oQAAAAAAAAcBAAC4////v1MAAAAAAACFEAAATv3//7cDAAAAAAAAtwIAAAEAAAB5ocD/AAAAAHmkuP8AAAAAHRQUAAAAAAC3AgAAAQAAALcFAAAAAAAABQAEAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAAAdQQ0AAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA9f8KAAAAtwUAAAAAAAAFAPP/AAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BAgAAAAAAtwEAAAQAAAAFAGsAAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA8/8KAAAAtwUAAAAAAAAFAPH/AAAAAAcDAAABAAAAezYQAAAAAAC3BgAAAAAAAAUAHgEAAAAAv6EAAAAAAAAHAQAAKP///4UQAAAj/f//twMAAAAAAAC3AgAAAQAAAHmhMP8AAAAAeaQo/wAAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFAAYAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BAgAAAAAAtwEAAA8AAAAFAE0AAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA8/8KAAAAtwUAAAAAAAAFAPH/AAAAAHmm0P8AAAAABQACAQAAAAB5YgAAAAAAAL+hAAAAAAAABwEAAFj///+FEAAABv3//7cDAAAAAAAAtwIAAAEAAAB5oWD/AAAAAHmkWP8AAAAAHRQHAAAAAAC3AgAAAQAAALcFAAAAAAAABQASAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAABdQQ4AAAAAALcBAAARAAAAexro/wAAAAB5odj/AAAAAHsa8P8AAAAAeaHg/wAAAAB7Gvj/AAAAAL+hAAAAAAAABwEAAOj///+FEAAAnwUAAL8GAAAAAAAAv6EAAAAAAAAHAQAA2P///xUH5QAAAAAABQDhAAAAAABxQAAAAAAAALcDAAAAAAAAFQACAAoAAAAHBQAAAQAAAL9TAAAAAAAAtwUAAAEAAAAVAOf/CgAAALcFAAAAAAAABQDl/wAAAAB5YgAAAAAAAL+hAAAAAAAABwEAAEj///+FEAAA3/z//7cDAAAAAAAAtwIAAAEAAAB5oVD/AAAAAHmkSP8AAAAAHRQHAAAAAAC3AgAAAQAAALcFAAAAAAAABQAGAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAABdQQIAAAAAALcBAAAOAAAABQAJAAAAAABxQAAAAAAAALcDAAAAAAAAFQACAAoAAAAHBQAAAQAAAL9TAAAAAAAAtwUAAAEAAAAVAPP/CgAAALcFAAAAAAAABQDx/wAAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAABuBQAAvwYAAAAAAAAFALYAAAAAAHliAAAAAAAAv6EAAAAAAAAHAQAAqP///4UQAAC6/P//twMAAAAAAAC3AgAAAQAAAHmhsP8AAAAAeaSo/wAAAAAdFBAAAAAAALcCAAABAAAAtwUAAAAAAAAFAAQAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAB1BCQAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQD1/woAAAC3BQAAAAAAAAUA8/8AAAAAtwEAAAQAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAABKBQAAvwYAAAAAAAC/oQAAAAAAAAcBAADY////FQeQAAAAAAAFAIwAAAAAAL+hAAAAAAAABwEAAJj///+/QgAAAAAAAL9TAAAAAAAAhRAAAJL8//+3AwAAAAAAALcCAAABAAAAeaGg/wAAAAB5pJj/AAAAAB0UBwAAAAAAtwIAAAEAAAC3BQAAAAAAAAUAEgAAAAAAD1IAAAAAAAAHBAAAAQAAAL81AAAAAAAAXUEOAAAAAAC3AQAAFAAAAHsa6P8AAAAAeaHY/wAAAAB7GvD/AAAAAHmh4P8AAAAAexr4/wAAAAC/oQAAAAAAAAcBAADo////hRAAACsFAAC/BgAAAAAAAL+hAAAAAAAABwEAANj///8VB3EAAAAAAAUAbQAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQDn/woAAAC3BQAAAAAAAAUA5f8AAAAAtwEAAAQAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAAAUBQAAvwYAAAAAAAC/oQAAAAAAAAcBAADY////FQdaAAAAAAAFAFYAAAAAAD0yAQAAAAAABQCl/gAAAAC/oQAAAAAAAAcBAAB4////v0IAAAAAAACFEAAAW/z//7cDAAAAAAAAtwIAAAEAAAB5oYD/AAAAAHmkeP8AAAAAHRQHAAAAAAC3AgAAAQAAALcFAAAAAAAABQASAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAABdQQ4AAAAAALcBAAAUAAAAexro/wAAAAB5odj/AAAAAHsa8P8AAAAAeaHg/wAAAAB7Gvj/AAAAAL+hAAAAAAAABwEAAOj///+FEAAA9AQAAL8GAAAAAAAAv6EAAAAAAAAHAQAA2P///xUHOgAAAAAABQA2AAAAAABxQAAAAAAAALcDAAAAAAAAFQACAAoAAAAHBQAAAQAAAL9TAAAAAAAAtwUAAAEAAAAVAOf/CgAAALcFAAAAAAAABQDl/wAAAAB5pvD/AAAAAAUALgAAAAAAeWIIAAAAAAB5YxAAAAAAAD0yAQAAAAAABQB4/gAAAAB5YgAAAAAAAL+hAAAAAAAABwEAAGj///+FEAAALvz//7cDAAAAAAAAtwIAAAEAAAB5oXD/AAAAAHmkaP8AAAAAHRQHAAAAAAC3AgAAAQAAALcFAAAAAAAABQASAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAABdQQ4AAAAAALcBAAARAAAAexro/wAAAAB5odj/AAAAAHsa8P8AAAAAeaHg/wAAAAB7Gvj/AAAAAL+hAAAAAAAABwEAAOj///+FEAAAxwQAAL8GAAAAAAAAv6EAAAAAAAAHAQAA2P///xUHDQAAAAAABQAJAAAAAABxQAAAAAAAALcDAAAAAAAAFQACAAoAAAAHBQAAAQAAAL9TAAAAAAAAtwUAAAEAAAAVAOf/CgAAALcFAAAAAAAABQDl/wAAAAC/oQAAAAAAAAcBAADQ////hRAAAAn9//+/YAAAAAAAAJUAAAAAAAAAGAEAAPDxAQAAAAAAAAAAAL8yAAAAAAAAv0MAAAAAAACFEAAANx8AAIUQAAD/////v0IAAAAAAACFEAAA1hIAAIUQAAD/////vycAAAAAAAC/FgAAAAAAAHlzCAAAAAAAeXEQAAAAAAAHAQAABAAAAC0xRQAAAAAAv6EAAAAAAAAHAQAA0P///7cCAAAAAAAAtwMAAAQAAACFEAAAs/z//2Gh1P8AAAAAZwEAACAAAADHAQAAIAAAAGGi0P8AAAAAZwIAACAAAADHAgAAIAAAALcFAAAAAAAAfRJgAAAAAAAfIQAAAAAAALcFAAAAAAAAeXMIAAAAAAB5dBAAAAAAAD00XwAAAAAABQAJAAAAAABnBQAABAAAAA+VAAAAAAAABwEAAP////+/EgAAAAAAAGcCAAAgAAAAdwIAACAAAAC/BAAAAAAAABUCUgAAAAAAPTRVAAAAAAB5cgAAAAAAAL8gAAAAAAAAD0AAAAAAAABxCQAAAAAAAL9AAAAAAAAABwAAAAEAAAB7BxAAAAAAABgIAADD0gEAAAAAAAAAAAAPmAAAAAAAAHGJAAAAAAAAVQnr//8AAAAHBAAAAQAAAL+hAAAAAAAABwEAAMD///+/QwAAAAAAAIUQAADK+///twMAAAAAAAC3BwAAAQAAAHmhyP8AAAAAeaTA/wAAAAC3AgAAAQAAAB0UBwAAAAAAtwIAAAEAAAC3BQAAAAAAAAUABgAAAAAAD1IAAAAAAAAHBAAAAQAAAL81AAAAAAAAXUECAAAAAAC3AQAACwAAAAUAJgAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQDz/woAAAC3BQAAAAAAAAUA8f8AAAAAezcQAAAAAAB5cgAAAAAAAL+hAAAAAAAABwEAALD///+FEAAArfv//7cDAAAAAAAAtwcAAAEAAAB5obj/AAAAAHmksP8AAAAAtwIAAAEAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFAAYAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BAgAAAAAAtwEAAAQAAAAFAAkAAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA8/8KAAAAtwUAAAAAAAAFAPH/AAAAAHsa6P8AAAAAeaHY/wAAAAB7GvD/AAAAAHmh4P8AAAAAexr4/wAAAAC/oQAAAAAAAAcBAADo////hRAAADsEAABrdgAAAAAAAHsGCAAAAAAABQADAAAAAAC3AQAAAAAAAGsWAAAAAAAAa1YCAAAAAACVAAAAAAAAABgBAAAI8gEAAAAAAAAAAAC/QgAAAAAAAIUQAAC4HgAAhRAAAP////+/FgAAAAAAAHkkCAAAAAAAeSMQAAAAAAA9NAQAAAAAAL8xAAAAAAAAv0IAAAAAAACFEAAAUhIAAIUQAAD/////eSIAAAAAAAC/oQAAAAAAAAcBAADw////hRAAAHX7//+3BAAAAAAAALcBAAABAAAAeaL4/wAAAAB5o/D/AAAAAB0jBwAAAAAAtwEAAAEAAAC3BQAAAAAAAAUABwAAAAAAD1EAAAAAAAAHAwAAAQAAAL9FAAAAAAAAXTIDAAAAAAB7RggAAAAAAHsWAAAAAAAAlQAAAAAAAABxMAAAAAAAALcEAAAAAAAAFQACAAoAAAAHBQAAAQAAAL9UAAAAAAAAtwUAAAEAAAAVAPL/CgAAALcFAAAAAAAABQDw/wAAAAC/FgAAAAAAAHkjEAAAAAAABwMAAAEAAAB5IQgAAAAAAC0xAQAAAAAAvxMAAAAAAAB5IgAAAAAAAL+hAAAAAAAABwEAAPD///+FEAAAU/v//7cEAAAAAAAAtwEAAAEAAAB5ovj/AAAAAHmj8P8AAAAAHSMHAAAAAAC3AQAAAQAAALcFAAAAAAAABQAHAAAAAAAPUQAAAAAAAAcDAAABAAAAv0UAAAAAAABdMgMAAAAAAHtGCAAAAAAAexYAAAAAAACVAAAAAAAAAHEwAAAAAAAAtwQAAAAAAAAVAAIACgAAAAcFAAABAAAAv1QAAAAAAAC3BQAAAQAAABUA8v8KAAAAtwUAAAAAAAAFAPD/AAAAAL8mAAAAAAAAvxcAAAAAAAB5cggAAAAAAHlzEAAAAAAALTIEAAAAAAA9MhsAAAAAAL8xAAAAAAAAhRAAAAsSAACFEAAA/////3l0AAAAAAAAv0EAAAAAAAAPMQAAAAAAAHERAAAAAAAAvzUAAAAAAAAHBQAAAQAAAHtXEAAAAAAAZQE0AGUAAABlAVYAWwAAABUBZAAiAAAAFQEBAC8AAAAFAKQAAAAAAHlhCAAAAAAAeWIQAAAAAABdEgMAAAAAAL9hAAAAAAAAtwIAAAEAAACFEAAAcfr//79hAAAAAAAAhRAAAJwCAAB5YRAAAAAAAA8QAAAAAAAAtwEAAC8AAAAFAJEAAAAAAHlyAAAAAAAAv6EAAAAAAAAHAQAAuP///4UQAAAW+///twMAAAAAAAC3AgAAAQAAAHmhwP8AAAAAeaS4/wAAAAAdFBAAAAAAALcCAAABAAAAtwUAAAAAAAAFAAQAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAB1BCQAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQD1/woAAAC3BQAAAAAAAAUA8/8AAAAAtwEAAAQAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAACmAwAAvwYAAAAAAAAFAHIAAAAAAGUBDwBxAAAAFQFUAGYAAAAVAQEAbgAAAAUAcAAAAAAAeWEIAAAAAAB5YhAAAAAAAF0SAwAAAAAAv2EAAAAAAAC3AgAAAQAAAIUQAAA9+v//v2EAAAAAAACFEAAAaAIAAHlhEAAAAAAADxAAAAAAAAC3AQAACgAAAAUAXQAAAAAAFQE5AHIAAAAVAVAAdAAAABUBAQB1AAAABQBgAAAAAAC/oQAAAAAAAAcBAADI////v3IAAAAAAACFEAAA4f7//2moyP8AAAAAFQh6AAEAAABpqcr/AAAAAL+RAAAAAAAAVwEAAAD8AAAVAXgAANgAAFUBowAA3AAAeXIIAAAAAAB5cxAAAAAAAD0yeQAAAAAABQCe/wAAAAAVARoAXAAAABUBAQBiAAAABQBOAAAAAAB5YQgAAAAAAHliEAAAAAAAXRIDAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAABv6//+/YQAAAAAAAIUQAABGAgAAeWEQAAAAAAAPEAAAAAAAALcBAAAIAAAABQA7AAAAAAB5YQgAAAAAAHliEAAAAAAAXRIDAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAA/6//+/YQAAAAAAAIUQAAA6AgAAeWEQAAAAAAAPEAAAAAAAALcBAAAiAAAABQAvAAAAAAB5YQgAAAAAAHliEAAAAAAAXRIDAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAAP6//+/YQAAAAAAAIUQAAAuAgAAeWEQAAAAAAAPEAAAAAAAALcBAABcAAAABQAjAAAAAAB5YQgAAAAAAHliEAAAAAAAXRIDAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAPf5//+/YQAAAAAAAIUQAAAiAgAAeWEQAAAAAAAPEAAAAAAAALcBAAANAAAABQAXAAAAAAB5YQgAAAAAAHliEAAAAAAAXRIDAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAOv5//+/YQAAAAAAAIUQAAAWAgAAeWEQAAAAAAAPEAAAAAAAALcBAAAMAAAABQALAAAAAAB5YQgAAAAAAHliEAAAAAAAXRIDAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAN/5//+/YQAAAAAAAIUQAAAKAgAAeWEQAAAAAAAPEAAAAAAAALcBAAAJAAAAcxAAAAAAAAB5YRAAAAAAAAcBAAABAAAAexYQAAAAAAC3BgAAAAAAAL9gAAAAAAAAlQAAAAAAAAAtMgMAAAAAAL9RAAAAAAAAhRAAAFcRAACFEAAA/////7+hAAAAAAAABwEAACj///+/QgAAAAAAAL9TAAAAAAAAhRAAAHn6//+3AwAAAAAAALcCAAABAAAAeaEw/wAAAAB5pCj/AAAAAB0UBwAAAAAAtwIAAAEAAAC3BQAAAAAAAAUABgAAAAAAD1IAAAAAAAAHBAAAAQAAAL81AAAAAAAAXUECAAAAAAC3AQAACwAAAAUAa/8AAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQDz/woAAAC3BQAAAAAAAAUA8f8AAAAAeabQ/wAAAAAFANz/AAAAAHlyCAAAAAAAeXMQAAAAAAAtMjAAAAAAAD0yUwAAAAAABQAm/wAAAAB5cgAAAAAAAL+hAAAAAAAABwEAAEj///+FEAAAV/r//7cDAAAAAAAAtwIAAAEAAAB5oVD/AAAAAHmkSP8AAAAAHRQHAAAAAAC3AgAAAQAAALcFAAAAAAAABQASAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAABdQQ4AAAAAALcBAAARAAAAexro/wAAAAB5odj/AAAAAHsa8P8AAAAAeaHg/wAAAAB7Gvj/AAAAAL+hAAAAAAAABwEAAOj///+FEAAA8AIAAL8GAAAAAAAAv6EAAAAAAAAHAQAA2P///xUIuv8AAAAABQCUAQAAAABxQAAAAAAAALcDAAAAAAAAFQACAAoAAAAHBQAAAQAAAL9TAAAAAAAAtwUAAAEAAAAVAOf/CgAAALcFAAAAAAAABQDl/wAAAAC/kQAAAAAAAFcBAAAA+AAAVQH1AADYAAB5cggAAAAAAHlzEAAAAAAAPTJMAAAAAAAFAPj+AAAAAHl0AAAAAAAAv0EAAAAAAAAPMQAAAAAAAHERAAAAAAAAvzUAAAAAAAAHBQAAAQAAAHtXEAAAAAAAFQEBAFwAAAAFAGkAAAAAAC1SkAAAAAAAv6EAAAAAAAAHAQAAiP///79CAAAAAAAAv1MAAAAAAACFEAAAHvr//7cDAAAAAAAAtwIAAAEAAAB5oZD/AAAAAHmkiP8AAAAAHRSWAAAAAAC3AgAAAQAAALcFAAAAAAAABQAEAAAAAAAPUgAAAAAAAAcEAAABAAAAvzUAAAAAAAAdQY8AAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA9f8KAAAAtwUAAAAAAAAFAPP/AAAAAHlyAAAAAAAAv6EAAAAAAAAHAQAAqP///4UQAAAF+v//twMAAAAAAAC3AgAAAQAAAHmhsP8AAAAAeaSo/wAAAAAdFBAAAAAAALcCAAABAAAAtwUAAAAAAAAFAAQAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAB1BCQAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQD1/woAAAC3BQAAAAAAAAUA8/8AAAAAtwEAAAQAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAACVAgAAvwYAAAAAAAC/oQAAAAAAAAcBAADY////FQhf/wAAAAAFADkBAAAAAHlyAAAAAAAAv6EAAAAAAAAHAQAAOP///4UQAADe+f//twMAAAAAAAC3AgAAAQAAAHmhQP8AAAAAeaQ4/wAAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFABIAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BDgAAAAAAtwEAAA4AAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAAB3AgAAvwYAAAAAAAC/oQAAAAAAAAcBAADY////FQhB/wAAAAAFABsBAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA5/8KAAAAtwUAAAAAAAAFAOX/AAAAAL+hAAAAAAAABwEAAJj///+/QgAAAAAAAL9TAAAAAAAAhRAAALb5//+3AwAAAAAAALcCAAABAAAAeaGg/wAAAAB5pJj/AAAAAB0UBwAAAAAAtwIAAAEAAAC3BQAAAAAAAAUAEgAAAAAAD1IAAAAAAAAHBAAAAQAAAL81AAAAAAAAXUEOAAAAAAC3AQAAFAAAAHsa6P8AAAAAeaHY/wAAAAB7GvD/AAAAAHmh4P8AAAAAexr4/wAAAAC/oQAAAAAAAAcBAADo////hRAAAE8CAAC/BgAAAAAAAL+hAAAAAAAABwEAANj///8VCBn/AAAAAAUA8wAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQDn/woAAAC3BQAAAAAAAAUA5f8AAAAAv0EAAAAAAAAPUQAAAAAAAHERAAAAAAAABwMAAAIAAAB7NxAAAAAAABUBAQB1AAAABQAXAAAAAAC/oQAAAAAAAAcBAADo////v3IAAAAAAACFEAAAi/3//2mh6P8AAAAAFQEBAAEAAAAFADkAAAAAAHmm8P8AAAAABQD//gAAAAC3AQAABAAAAHsa6P8AAAAAeaHY/wAAAAB7GvD/AAAAAHmh4P8AAAAAexr4/wAAAAC/oQAAAAAAAAcBAADo////hRAAACgCAAC/BgAAAAAAAL+hAAAAAAAABwEAANj///8VCPL+AAAAAAUAzAAAAAAAPTIBAAAAAAAFAD7+AAAAAL+hAAAAAAAABwEAAHj///+/QgAAAAAAAIUQAABv+f//twMAAAAAAAC3AgAAAQAAAHmhgP8AAAAAeaR4/wAAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFABIAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BDgAAAAAAtwEAABQAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAAAIAgAAvwYAAAAAAAC/oQAAAAAAAAcBAADY////FQjS/gAAAAAFAKwAAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA5/8KAAAAtwUAAAAAAAAFAOX/AAAAAGmh6v8AAAAAvxIAAAAAAABXAgAAAPwAABUCAQAA3AAABQBIAAAAAAAHAQAAACQAAFcBAAD//wAABwkAAAAoAABXCQAA//8AAGcJAAAKAAAATxkAAAAAAAAHCQAAAAABACUJawD//xAAv5EAAAAAAABXAQAAAPj/BxUBaAAA2AAAtwEAAAAAAABjGuj/AAAAALcBAACAAAAALZENAAAAAAC3AQAAAAgAAC2RAQAAAAAABQARAAAAAAC/kQAAAAAAAFcBAAA/AAAARwEAAIAAAABzGun/AAAAAHcJAAAGAAAAVwkAAB8AAABHCQAAwAAAAHOa6P8AAAAAtwMAAAIAAAAFAAIAAAAAAHOa6P8AAAAAtwMAAAEAAAC/ogAAAAAAAAcCAADo////v2EAAAAAAACFEAAAWfj//wUAn/4AAAAAtwEAAAAAAQAtkQEAAAAAAAUADwAAAAAAv5EAAAAAAABXAQAAPwAAAEcBAACAAAAAcxrq/wAAAAC/kQAAAAAAAHcBAAAGAAAAVwEAAD8AAABHAQAAgAAAAHMa6f8AAAAAdwkAAAwAAABXCQAADwAAAEcJAADgAAAAc5ro/wAAAAC3AwAAAwAAAAUA6f8AAAAAv5EAAAAAAABXAQAAPwAAAEcBAACAAAAAcxrr/wAAAAC/kQAAAAAAAHcBAAASAAAARwEAAPAAAABzGuj/AAAAAL+RAAAAAAAAdwEAAAYAAABXAQAAPwAAAEcBAACAAAAAcxrq/wAAAAB3CQAADAAAAFcJAAA/AAAARwkAAIAAAABzmun/AAAAALcDAAAEAAAABQDW/wAAAAB5cggAAAAAAHlzEAAAAAAAPTIBAAAAAAAFAMb9AAAAAHlyAAAAAAAAv6EAAAAAAAAHAQAAaP///4UQAAD3+P//twMAAAAAAAC3AgAAAQAAAHmhcP8AAAAAeaRo/wAAAAAdFAcAAAAAALcCAAABAAAAtwUAAAAAAAAFABIAAAAAAA9SAAAAAAAABwQAAAEAAAC/NQAAAAAAAF1BDgAAAAAAtwEAABEAAAB7Guj/AAAAAHmh2P8AAAAAexrw/wAAAAB5oeD/AAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA6P///4UQAACQAQAAvwYAAAAAAAC/oQAAAAAAAAcBAADY////FQha/gAAAAAFADQAAAAAAHFAAAAAAAAAtwMAAAAAAAAVAAIACgAAAAcFAAABAAAAv1MAAAAAAAC3BQAAAQAAABUA5/8KAAAAtwUAAAAAAAAFAOX/AAAAAHlyCAAAAAAAeXMQAAAAAAA9MgEAAAAAAAUAm/0AAAAAeXIAAAAAAAC/oQAAAAAAAAcBAABY////hRAAAMz4//+3AwAAAAAAALcCAAABAAAAeaFg/wAAAAB5pFj/AAAAAB0UBwAAAAAAtwIAAAEAAAC3BQAAAAAAAAUAEgAAAAAAD1IAAAAAAAAHBAAAAQAAAL81AAAAAAAAXUEOAAAAAAC3AQAADgAAAHsa6P8AAAAAeaHY/wAAAAB7GvD/AAAAAHmh4P8AAAAAexr4/wAAAAC/oQAAAAAAAAcBAADo////hRAAAGUBAAC/BgAAAAAAAL+hAAAAAAAABwEAANj///8VCC/+AAAAAAUACQAAAAAAcUAAAAAAAAC3AwAAAAAAABUAAgAKAAAABwUAAAEAAAC/UwAAAAAAALcFAAABAAAAFQDn/woAAAC3BQAAAAAAAAUA5f8AAAAAv6EAAAAAAAAHAQAA0P///4UQAACn+f//BQAh/gAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAC/JwAAAAAAAL8WAAAAAAAAeWIIAAAAAAAtJxgAAAAAABUHCgAAAAAAHXIVAAAAAAB5YQAAAAAAALcDAAABAAAAv3QAAAAAAACFEAAAoff//1UADAAAAAAAv3EAAAAAAAC3AgAAAQAAAIUQAAC+CgAAhRAAAP////8VAgMAAAAAAHlhAAAAAAAAtwMAAAEAAACFEAAAlvf//7cBAAABAAAAexYAAAAAAAC3BwAAAAAAAAUAAwAAAAAAvwEAAAAAAACFEAAAQ/n//3sGAAAAAAAAe3YIAAAAAACVAAAAAAAAABgBAAAg8gEAAAAAAAAAAACFEAAAnxsAAIUQAAD/////eRAAAAAAAACVAAAAAAAAAL8WAAAAAAAAeWcIAAAAAAC/cQAAAAAAAB8hAAAAAAAAPTFLAAAAAAC/KQAAAAAAAA85AAAAAAAAtwEAAAEAAAAtkgEAAAAAALcBAAAAAAAAVQEQAAEAAAC/oQAAAAAAAAcBAADA////v5IAAAAAAAC3AwAAAAAAAIUQAAAn+f//eaPI/wAAAAB5osD/AAAAAL+hAAAAAAAABwEAALD///+FEAAAIvn//3mhuP8AAAAAFQFDAAAAAAAYAQAASPIBAAAAAAAAAAAAhRAAAIIbAACFEAAA/////7+hAAAAAAAABwEAAPD///+FEAAApfj//3mo+P8AAAAAeaPw/wAAAAC/MgAAAAAAAA+CAAAAAAAABwIAAP////+/gQAAAAAAAIcBAAAAAAAAXxIAAAAAAAC3AQAAAQAAAC0jAQAAAAAAtwEAAAAAAABnBwAAAQAAAC2XAQAAAAAAv5cAAAAAAABXAQAAAQAAAFUBIwAAAAAAv6EAAAAAAAAHAQAA4P///7cDAAAAAAAAv3QAAAAAAAC3BQAAAAAAAIUQAACUIAAAtwEAAAEAAAB5ouj/AAAAAFUCAQAAAAAAtwEAAAAAAABXAQAAAQAAAFUBFwAAAAAAeang/wAAAAAVCBYAAAAAAHliCAAAAAAAVQIFAAAAAAC/kQAAAAAAAL+CAAAAAAAAhRAAAET3//9VAAoAAAAAAAUABQAAAAAAeWEAAAAAAAC3AwAAAQAAAL+UAAAAAAAAhRAAAEL3//9VAAQAAAAAAL+RAAAAAAAAv4IAAAAAAACFEAAAXwoAAIUQAAD/////vwEAAAAAAACFEAAA7Pj//3t2CAAAAAAAewYAAAAAAACVAAAAAAAAAIUQAADk+P//v6EAAAAAAAAHAQAA0P///7+SAAAAAAAAtwMAAAAAAACFEAAA4Pj//3mh2P8AAAAAFQEBAAAAAAAFAL3/AAAAAIUQAABLCgAAhRAAAP////95EggAAAAAABUCAwAAAAAAeREAAAAAAAC3AwAAAQAAAIUQAAAm9///lQAAAAAAAAB5EQAAAAAAAIUQAADjAAAAlQAAAAAAAACVAAAAAAAAAHkSEAAAAAAAeSQAAAAAAAB5EggAAAAAAHkjAAAAAAAAeREAAAAAAAB5EggAAAAAAHkRAAAAAAAAhRAAAFQNAACFEAAA/////3kkAAAAAAAAeRIIAAAAAAB5EQAAAAAAALcDAAAAAAAAhRAAAE4NAACFEAAA/////78wAAAAAAAAvyYAAAAAAAC/GAAAAAAAAHliKAAAAAAAeVcI8AAAAAAfcgAAAAAAAHtKyP8AAAAAPUKIAAAAAAB5VBDwAAAAAHlZAPAAAAAAvwEAAAAAAAAfcQAAAAAAAHsaoP8AAAAAv3EAAAAAAACHAQAAAAAAAHsamP8AAAAAe4qQ/wAAAAB7asD/AAAAAHsKuP8AAAAAe0qo/wAAAAAFAFQAAAAAAD1zhAAAAAAAv0AAAAAAAAAPMAAAAAAAAHmmyP8AAAAAPWCEAAAAAAC/kAAAAAAAAA8wAAAAAAAAvxYAAAAAAAAPNgAAAAAAAAcDAAD/////cWYAAAAAAABxAAAAAAAAAB1gCgAAAAAAeabA/wAAAAB5YQgAAAAAAB8SAAAAAAAADzIAAAAAAAAHAgAAAQAAAHsmKAAAAAAAeaC4/wAAAAB5pKj/AAAAAFUEYgAAAAAABQBgAAAAAAC/MAAAAAAAAAcAAAABAAAALVDm/wAAAAC/cwAAAAAAAHmhwP8AAAAAeaKo/wAAAABVAgEAAAAAAHkTOAAAAAAAeRIIAAAAAAC/oQAAAAAAAAcBAADQ////hRAAAIr4//95odj/AAAAAHsasP8AAAAAeabQ/wAAAAAFACMAAAAAAHmguP8AAAAAVQgIAAEAAAB5o8D/AAAAAHkxKAAAAAAAvxIAAAAAAAAfcgAAAAAAAHsjKAAAAAAAeaSo/wAAAABVBE8AAAAAAAUATQAAAAAAPXZcAAAAAAB5osD/AAAAAHkiKAAAAAAAvyMAAAAAAAAfcwAAAAAAAA9jAAAAAAAAeaTI/wAAAAA9Q1sAAAAAAL+UAAAAAAAAD2QAAAAAAAC/BQAAAAAAAA81AAAAAAAAcVMAAAAAAABxRAAAAAAAAL8WAAAAAAAAHTQJAAAAAAB5psD/AAAAAHlhEAAAAAAAHxIAAAAAAAB7JigAAAAAAHmokP8AAAAAeaSo/wAAAABVBDAAAAAAAHsWOAAAAAAABQAuAAAAAAB5obD/AAAAAD0W3f8AAAAAtwgAAAEAAAC3AQAAAQAAAIUQAABm+P//v2EAAAAAAAAPAQAAAAAAAC0W1f8AAAAAtwgAAAAAAAAFANP/AAAAAL8BAAAAAAAADyEAAAAAAABxEQAAAAAAAFcBAAA/AAAAtwMAAAEAAABvEwAAAAAAAHlhGAAAAAAAXxMAAAAAAAAVAxgAAAAAAHljCAAAAAAAVQQEAAAAAAB5YTgAAAAAAC0TAQAAAAAAvzEAAAAAAAC/EwAAAAAAAL+hAAAAAAAABwEAAPD///+3AgAAAAAAAIUQAAAu9///eaP4/wAAAAB5ovD/AAAAAL+hAAAAAAAABwEAAOD///+FEAAAKff//3liKAAAAAAAeaGg/wAAAAAPIQAAAAAAAHmkmP8AAAAADyQAAAAAAAB5peD/AAAAAHmj6P8AAAAABwMAAP////8FAKL/AAAAAHsmKAAAAAAAVQQBAAAAAAB7djgAAAAAAB9yAAAAAAAAeaHI/wAAAAAtIdn/AAAAALcBAAAAAAAAexYoAAAAAAAFAAUAAAAAAHtzOAAAAAAAeaiQ/wAAAAB7GBAAAAAAAHsoCAAAAAAAtwEAAAEAAAB7GAAAAAAAAJUAAAAAAAAAGAEAAIDyAQAAAAAAAAAAAL8yAAAAAAAABQAIAAAAAAAfcgAAAAAAAA8yAAAAAAAAGAEAAJjyAQAAAAAAAAAAAAUACQAAAAAAGAEAALDyAQAAAAAAAAAAAL9iAAAAAAAAv3MAAAAAAACFEAAAmRoAAIUQAAD/////GAEAAMjyAQAAAAAAAAAAAL8yAAAAAAAAeaPI/wAAAACFEAAAkxoAAIUQAAD/////vyYAAAAAAAC/EgAAAAAAAL+hAAAAAAAABwEAAPD///+FEAAAt/b//3mi+P8AAAAAeaHw/wAAAAC/YwAAAAAAAIUQAADdFwAAlQAAAAAAAAC/NwAAAAAAAL8mAAAAAAAAeRIQAAAAAAB5EwgAAAAAAHkRAAAAAAAAexrQ/wAAAAB7Otj/AAAAAHsq4P8AAAAAtwEAACgAAAC3AgAACAAAAIUQAABM9v//VQAEAAAAAAC3AQAAKAAAALcCAAAIAAAAhRAAAG0JAACFEAAA/////3mh4P8AAAAAexAQAAAAAAB5odj/AAAAAHsQCAAAAAAAeaHQ/wAAAAB7EAAAAAAAAHtwIAAAAAAAe2AYAAAAAACVAAAAAAAAAHkTAAAAAAAAZQMGAAoAAABlAw0ABAAAAGUDHAABAAAAFQM3AAAAAAAHAQAACAAAAIUQAADHBwAABQB6AAAAAABlAw8ADwAAAGUDHQAMAAAAFQM2AAsAAAC/IQAAAAAAABgCAAAw1gEAAAAAAAAAAAC3AwAADgAAAAUAcQAAAAAAZQMdAAcAAAAVAzQABQAAABUDOAAGAAAAvyEAAAAAAAAYAgAAe9YBAAAAAAAAAAAAtwMAABMAAAAFAGkAAAAAAGUDHAASAAAAFQM2ABAAAAAVAzoAEQAAAL8hAAAAAAAAGAIAAH/VAQAAAAAAAAAAALcDAAAOAAAABQBhAAAAAAAVAzkAAgAAABUDPQADAAAAvyEAAAAAAAAYAgAAs9YBAAAAAAAAAAAAtwMAABoAAAAFAFoAAAAAABUDPAANAAAAFQNAAA4AAAC/IQAAAAAAABgCAADF1QEAAAAAAAAAAAC3AwAAPgAAAAUAUwAAAAAAFQM/AAgAAAAVA0MACQAAAL8hAAAAAAAAGAIAAEzWAQAAAAAAAAAAALcDAAAOAAAABQBMAAAAAAAVA0IAEwAAABUDRgAUAAAAvyEAAAAAAAAYAgAAONUBAAAAAAAAAAAAtwMAABgAAAAFAEUAAAAAAHkTEAAAAAAAeRQIAAAAAAC/IQAAAAAAAL9CAAAAAAAABQBAAAAAAAC/IQAAAAAAABgCAAA+1gEAAAAAAAAAAAC3AwAADgAAAAUAOwAAAAAAvyEAAAAAAAAYAgAAmtYBAAAAAAAAAAAAtwMAABkAAAAFADYAAAAAAL8hAAAAAAAAGAIAAI7WAQAAAAAAAAAAALcDAAAMAAAABQAxAAAAAAC/IQAAAAAAABgCAACx1QEAAAAAAAAAAAC3AwAAFAAAAAUALAAAAAAAvyEAAAAAAAAYAgAAjdUBAAAAAAAAAAAAtwMAACQAAAAFACcAAAAAAL8hAAAAAAAAGAIAAOjWAQAAAAAAAAAAALcDAAAYAAAABQAiAAAAAAC/IQAAAAAAABgCAADN1gEAAAAAAAAAAAC3AwAAGwAAAAUAHQAAAAAAvyEAAAAAAAAYAgAAHdYBAAAAAAAAAAAAtwMAABMAAAAFABgAAAAAAL8hAAAAAAAAGAIAAAPWAQAAAAAAAAAAALcDAAAaAAAABQATAAAAAAC/IQAAAAAAABgCAABo1gEAAAAAAAAAAAC3AwAAEwAAAAUADgAAAAAAvyEAAAAAAAAYAgAAWtYBAAAAAAAAAAAAtwMAAA4AAAAFAAkAAAAAAL8hAAAAAAAAGAIAAGzVAQAAAAAAAAAAALcDAAATAAAABQAEAAAAAAC/IQAAAAAAABgCAABQ1QEAAAAAAAAAAAC3AwAAHAAAAIUQAAAIFwAAlQAAAAAAAAB7Kjj/AAAAAHkXAAAAAAAAe3rI/wAAAAC3CAAAAAAAAHuKkP8AAAAAe4qI/wAAAAC3BgAAAQAAAHtqgP8AAAAAv6EAAAAAAAAHAQAAcP///7+iAAAAAAAABwIAAMj///8YAwAAAL8AAAAAAAAAAAAAhRAAAMX2//+/oQAAAAAAAAcBAACw////exrw/wAAAAB7iuD/AAAAAHtq+P8AAAAAe2rY/wAAAAAYAQAAcPIBAAAAAAAAAAAAexrQ/wAAAAB5oXj/AAAAAHsauP8AAAAAeaFw/wAAAAB7GrD/AAAAAL+hAAAAAAAABwEAAID///+/ogAAAAAAAAcCAADQ////hRAAAML2//8VAAkAAAAAAL+jAAAAAAAABwMAAND///8YAQAAStQBAAAAAAAAAAAAtwIAADcAAAAYBAAA4PIBAAAAAAAAAAAAhRAAADkNAACFEAAA/////7+hAAAAAAAABwEAAID///+FEAAApvX//3mhkP8AAAAAexrA/wAAAAB5oYj/AAAAAHsauP8AAAAAeaGA/wAAAAB7GrD/AAAAAL+hAAAAAAAABwEAAGD///+/qAAAAAAAAAcIAACw////v4IAAAAAAAAYAwAAEMUAAAAAAAAAAAAAhRAAAJv2//95oWD/AAAAAHsaMP8AAAAAeaFo/wAAAAB7Gij/AAAAAL9yAAAAAAAABwIAABgAAAC/oQAAAAAAAAcBAABQ////GAMAAJCgAQAAAAAAAAAAAIUQAACN9v//BwcAACAAAAB5plD/AAAAAHmpWP8AAAAAv6EAAAAAAAAHAQAAQP///79yAAAAAAAAGAMAAJCgAQAAAAAAAAAAAIUQAACE9v//e5ro/wAAAAB7auD/AAAAAHmhKP8AAAAAexrY/wAAAAB5oTD/AAAAAHsa0P8AAAAAtwEAAAMAAAB7Gqj/AAAAAL+hAAAAAAAABwEAAND///97GqD/AAAAALcBAAAAAAAAexqQ/wAAAAC3AQAABAAAAHsaiP8AAAAAGAEAACjzAQAAAAAAAAAAAHsagP8AAAAAeaFI/wAAAAB7Gvj/AAAAAHmhQP8AAAAAexrw/wAAAAC/ogAAAAAAAAcCAACA////eaE4/wAAAACFEAAAoxYAAL8GAAAAAAAAv4EAAAAAAACFEAAAp/X//7+BAAAAAAAAhRAAACP+//+/YAAAAAAAAJUAAAAAAAAAexqg/wAAAAC3BgAAAAAAAHtquP8AAAAAe2qw/wAAAAC3BwAAAQAAAHt6qP8AAAAAv6EAAAAAAAAHAQAAkP///7+iAAAAAAAABwIAAKD///8YAwAAyIAAAAAAAAAAAAAAhRAAAFb2//+/oQAAAAAAAAcBAADw////exrg/wAAAAB7atD/AAAAAHt66P8AAAAAe3rI/wAAAAAYAQAAcPIBAAAAAAAAAAAAexrA/wAAAAB5oZj/AAAAAHsa+P8AAAAAeaGQ/wAAAAB7GvD/AAAAAL+hAAAAAAAABwEAAKj///+/ogAAAAAAAAcCAADA////hRAAAFP2//8VAAkAAAAAAL+jAAAAAAAABwMAAMD///8YAQAAStQBAAAAAAAAAAAAtwIAADcAAAAYBAAA4PIBAAAAAAAAAAAAhRAAAMoMAACFEAAA/////7+hAAAAAAAABwEAAKj///+FEAAAN/X//3mhuP8AAAAAexrQ/wAAAAB5obD/AAAAAHsayP8AAAAAeaGo/wAAAAB7GsD/AAAAAL+hAAAAAAAABwEAAMD///+FEAAAQQAAAJUAAAAAAAAAvxQAAAAAAAB7Oqj/AAAAAHsqoP8AAAAAcUEAAAAAAAAVASEABwAAAL+hAAAAAAAABwEAAJD///+/QgAAAAAAABgDAACY7wAAAAAAAAAAAACFEAAAKPb//3mmkP8AAAAAeaeY/wAAAAC/oQAAAAAAAAcBAACA////v6IAAAAAAAAHAgAAoP///xgDAAAwewAAAAAAAAAAAACFEAAAJfb//3t66P8AAAAAe2rg/wAAAAC/oQAAAAAAAAcBAADg////exrQ/wAAAAC3AQAAAAAAAHsawP8AAAAAtwEAAAIAAAB7Gtj/AAAAAHsauP8AAAAAGAEAAGjzAQAAAAAAAAAAAHsasP8AAAAAeaGI/wAAAAB7Gvj/AAAAAHmhgP8AAAAAexrw/wAAAAAFABYAAAAAAL+hAAAAAAAABwEAAHD///+/ogAAAAAAAAcCAACg////GAMAADB7AAAAAAAAAAAAAIUQAAAM9v//v6EAAAAAAAAHAQAA4P///3sa0P8AAAAAtwEAAAAAAAB7GsD/AAAAALcBAAABAAAAexrY/wAAAAB7Grj/AAAAABgBAACI8wEAAAAAAAAAAAB7GrD/AAAAAHmheP8AAAAAexro/wAAAAB5oXD/AAAAAHsa4P8AAAAAv6EAAAAAAAAHAQAAsP///4UQAACL////lQAAAAAAAAC/EgAAAAAAAL+hAAAAAAAABwEAAFD///97Ksj+AAAAAIUQAAAq9f//eaNY/wAAAAB5olD/AAAAAL+hAAAAAAAABwEAAIj///8YBAAAANcBAAAAAAAAAAAAtwUAAAkAAACFEAAAeA4AAHmhqP8AAAAAFQFeAAEAAABxqcH/AAAAAHmmuP8AAAAAeaCQ/wAAAAB5qIj/AAAAAHsKwP4AAAAABQACAAAAAAAfJgAAAAAAAL95AAAAAAAAtwcAAAEAAAAVCQEAAAAAALcHAAAAAAAAewp4/wAAAAB7inD/AAAAAHtqYP8AAAAAFQYOAAAAAAAdYA0AAAAAAD0GBgAAAAAAv4EAAAAAAAAPYQAAAAAAAHERAAAAAAAAZwEAADgAAADHAQAAOAAAAGUBBgC/////v6EAAAAAAAAHAQAAcP///7+iAAAAAAAABwIAAGD///+FEAAAk/3//4UQAAD/////FQYKAAAAAAC/hAAAAAAAAA9kAAAAAAAAcUL//wAAAABnAgAAOAAAAMcCAAA4AAAAtwEAAAAAAABtIQcAAAAAAFcCAAD/AAAAvyEAAAAAAAAFACgAAAAAAIUQAACc9f//eaDA/gAAAAC3AQAAAAARAAUAJAAAAAAAv0MAAAAAAAAHAwAA/////7cBAAAAAAAAHTgdAAAAAABxQ/7/AAAAAL8xAAAAAAAAVwEAAB8AAAC/NQAAAAAAAFcFAADAAAAAVQUXAIAAAAC/RQAAAAAAAAcFAAD+////twEAAAAAAAAdWA8AAAAAAHFF/f8AAAAAv1EAAAAAAABXAQAADwAAAL9QAAAAAAAAVwAAAMAAAABVAAkAgAAAAL9AAAAAAAAABwAAAP3///+3AQAAAAAAAB0IAwAAAAAAcUH8/wAAAABXAQAABwAAAGcBAAAGAAAAVwUAAD8AAABPUQAAAAAAAFcDAAA/AAAAZwEAAAYAAABPMQAAAAAAAHmgwP4AAAAAVwIAAD8AAABnAQAABgAAAE8hAAAAAAAAVwkAAP8AAABVCSAAAAAAABUBJQAAABEAtwIAAAEAAAC3AwAAgAAAAC0TsP8AAAAAtwIAAAIAAAC3AwAAAAgAAC0Trf8AAAAAtwIAAAMAAAC3AwAAAAABAC0Tqv8AAAAAtwIAAAQAAAAFAKj/AAAAAL+iAAAAAAAABwIAALD///95paD/AAAAAHmhmP8AAAAAeaSQ/wAAAAB5o4j/AAAAAHmg4P8AAAAAVQADAP////97WgjwAAAAALcFAAABAAAABQACAAAAAAB7WgjwAAAAALcFAAAAAAAAe1oQ8AAAAAB7GgDwAAAAAL+lAAAAAAAAv6EAAAAAAAAHAQAAcP///4UQAABE/f//BQAKAAAAAABzesH/AAAAAHtquP8AAAAAe2qA/wAAAAB7anj/AAAAALcBAAABAAAABQADAAAAAAB7arj/AAAAAHN6wf8AAAAAtwEAAAAAAAB7GnD/AAAAALcCAAAAAAAAeaFw/wAAAAAVAbwAAAAAAHmneP8AAAAAtwgAAAAAAAC3BgAA9////x92AAAAAAAAv3EAAAAAAAAHAQAACQAAAHsaqP4AAAAAtwkAAAoAAAC/oQAAAAAAAAcBAABA////eaLI/gAAAACFEAAAlfT//3mhQP8AAAAAeaJI/wAAAAB7Knj/AAAAAHsacP8AAAAAv3MAAAAAAAAPgwAAAAAAAAcDAAAJAAAAezr4/wAAAAB7KmD/AAAAAB2GDwAAAAAAHSMOAAAAAAA9IwcAAAAAAL8UAAAAAAAAD3QAAAAAAAAPhAAAAAAAAHFECQAAAAAAZwQAADgAAADHBAAAOAAAAGUEBgC/////v6EAAAAAAAAHAQAAYP///3samP8AAAAAv6EAAAAAAAAHAQAA+P///wUAeAAAAAAAHSMGAAAAAAAPcQAAAAAAAA+BAAAAAAAAcREJAAAAAAAHAQAA0P///1cBAAD/AAAALRkcAAAAAAC/oQAAAAAAAAcBAAAw////eaLI/gAAAACFEAAAcfT//3mhMP8AAAAAeaM4/wAAAAB7Onj/AAAAAHsacP8AAAAAv3UAAAAAAAAPhQAAAAAAAAcFAAAJAAAAe1r4/wAAAAB7OmD/AAAAAL8yAAAAAAAAH3IAAAAAAAAdhg4AAAAAAL8kAAAAAAAABwQAAPf///8dhAsAAAAAAD01BwAAAAAAvxMAAAAAAAAPcwAAAAAAAA+DAAAAAAAAcTMJAAAAAABnAwAAOAAAAMcDAAA4AAAAZQMDAL////8FANf/AAAAAAcIAAABAAAABQC+/wAAAAB7WqD+AAAAAA9xAAAAAAAAH4IAAAAAAAAPgQAAAAAAAAcBAAAJAAAABwIAAPf///8YAwAAMMQBAAAAAAAAAAAAtwQAAAgAAACFEAAAWvT//7cCAAAAAAAAVQABAAAAAAAFAGUAAAAAAL95AAAAAAAAD4kAAAAAAAC3AQAAAAAAAHsawP4AAAAABwkAABEAAAB7mpj+AAAAAL+hAAAAAAAABwEAACD///95osj+AAAAAIUQAABA9P//eaEg/wAAAAB5oij/AAAAAHsqeP8AAAAAexpw/wAAAAB7mvj/AAAAAHsqYP8AAAAAFQkJAAAAAAAdKQgAAAAAAD0pBgAAAAAAvxMAAAAAAAAPkwAAAAAAAHEzAAAAAAAAZwMAADgAAADHAwAAOAAAAGUDAQC/////BQCu/wAAAAAdKQYAAAAAAA+RAAAAAAAAcREAAAAAAAAHAQAA0P///1cBAAD/AAAAtwIAAAoAAAAtEgUAAAAAALcCAAAAAAAAeaHI/gAAAAB5ERAAAAAAAC2RQAAAAAAABQAFAAAAAAB5ocD+AAAAAAcBAAABAAAAexrA/gAAAAAHCQAAAQAAAAUA2/8AAAAAv6EAAAAAAAAHAQAAEP///3miyP4AAAAAhRAAABv0//95oRj/AAAAAHmiEP8AAAAAexp4/wAAAAB7KnD/AAAAAHmkqP4AAAAAe0rw/wAAAAB5paD+AAAAAHta+P8AAAAALVQJAAAAAAAVBBUAAAAAAB1BFAAAAAAAPRQGAAAAAAC/IwAAAAAAAA9DAAAAAAAAcTMAAAAAAABnAwAAOAAAAMcDAAA4AAAAZQMNAL////+/oQAAAAAAAAcBAAD4////exqY/wAAAAC/oQAAAAAAAAcBAADw////exqQ/wAAAAC/oQAAAAAAAAcBAABw////exqI/wAAAAC/oQAAAAAAAAcBAACI////hRAAAIP8//+FEAAA/////x2GDgAAAAAAv3MAAAAAAAAfEwAAAAAAAA+DAAAAAAAABwMAAAkAAAAVAwkAAAAAAD0V7P8AAAAAvyEAAAAAAAAPcQAAAAAAAA+BAAAAAAAAcREJAAAAAABnAQAAOAAAAMcBAAA4AAAAZQEBAL////8FAOT/AAAAAA9CAAAAAAAAv6EAAAAAAAAHAQAAYP///7+DAAAAAAAAhRAAAJQQAABxoWD/AAAAAFUBLQABAAAAtwIAAAAAAAC/KAAAAAAAAHmjyP4AAAAAeTEQAAAAAAB7GoD/AAAAAHkyCAAAAAAAeyp4/wAAAAB5MwAAAAAAAHs6cP8AAAAAexqY/wAAAAB7KpD/AAAAAHs6iP8AAAAAv6EAAAAAAAAHAQAA4P7//7+iAAAAAAAABwIAAIj///+FEAAAmPP//3mj6P4AAAAAeaLg/gAAAAC/oQAAAAAAAAcBAADQ/v//hRAAACz1//95ptj+AAAAAHmn0P4AAAAAtwEAACgAAAC3AgAACAAAAIUQAABw8///VQAEAAAAAAC3AQAAKAAAALcCAAAIAAAAhRAAAJEGAACFEAAA/////3twCAAAAAAAtwEAAAAAAAB5orj+AAAAAFUIAQAAAAAAtwIAAAAAAAB5o7D+AAAAAFUIAQAAAAAAtwMAAAAAAAB7EAAAAAAAAHswIAAAAAAAeyAYAAAAAAB7YBAAAAAAAJUAAAAAAAAAeaFo/wAAAAB7Grj+AAAAAL+hAAAAAAAABwEAAAD///95osj+AAAAAIUQAACz8///eaEI/wAAAAB5ogD/AAAAAHsaeP8AAAAAeypw/wAAAAB5pJj+AAAAAHtK8P8AAAAAe5r4/wAAAAAtlA4AAAAAABUEDgAAAAAAv3MAAAAAAAAfEwAAAAAAAA+DAAAAAAAABwMAABEAAAAVAwkAAAAAAD0UBwAAAAAAvyMAAAAAAAAPcwAAAAAAAA+DAAAAAAAAcTMRAAAAAABnAwAAOAAAAMcDAAA4AAAAZQMBAL////8FAJP/AAAAABUJCQAAAAAAHZEIAAAAAAA9Gfz/AAAAAL8hAAAAAAAAD5EAAAAAAABxEQAAAAAAAGcBAAA4AAAAxwEAADgAAABlAQEAv////wUA9f8AAAAAD3IAAAAAAAAPggAAAAAAAAcCAAARAAAAv6EAAAAAAAAHAQAAYP///3mjwP4AAAAAhRAAADcQAABxoWD/AAAAAFUBAQABAAAABQCi/wAAAAC3AgAAAQAAAHmhaP8AAAAAexqw/gAAAAB5ocj+AAAAAHkREAAAAAAALRed/wAAAAC/oQAAAAAAAAcBAADw/v//eaLI/gAAAACFEAAAfvP//xUHCgAAAAAAeaH4/gAAAAAdcQgAAAAAAD0XDAAAAAAAeaHw/gAAAAAPcQAAAAAAAHERAAAAAAAAZwEAADgAAADHAQAAOAAAALcCAADA////bRIFAAAAAAB5ocj+AAAAAL9yAAAAAAAAhRAAAGrz//+3AgAAAQAAAAUAif8AAAAAGAEAAADzAQAAAAAAAAAAAIUQAAAnFwAAhRAAAP////+3AgAACAAAAHshCAAAAAAAtwIAADAAAAB7IQAAAAAAAJUAAAAAAAAAlQAAAAAAAAB7GlD/AAAAAHsqiP8AAAAAeSgAAAAAAAC/oQAAAAAAAAcBAAC4////twYAAAAAAAC/ggAAAAAAALcDAAAAAAAAhRAAAB4BAAB5ocD/AAAAAHsa0P8AAAAAeaG4/wAAAAB7Gsj/AAAAAHtq2P8AAAAAv6EAAAAAAAAHAQAAqP///7cCAAAAAAAAv4MAAAAAAACFEAAA5gAAALcJAAAIAAAAeaGw/wAAAAB5pqj/AAAAAHsaWP8AAAAAPRYzAAAAAAC3CQAACAAAAL9nAAAAAAAABQApAAAAAAC/oQAAAAAAAAcBAADI////hRAAADIBAAB5odj/AAAAAHGi5/8AAAAAcyrs/wAAAABhouP/AAAAAGMq6P8AAAAAJwEAADAAAAAPEAAAAAAAAHOAKgAAAAAAeaFw/wAAAABzECkAAAAAAHmheP8AAAAAcxAoAAAAAAB7kCAAAAAAAHtwGAAAAAAAeaFg/wAAAAB7EBAAAAAAAHmhaP8AAAAAexAIAAAAAAB5oYD/AAAAAHsQAAAAAAAAv6EAAAAAAAAHAQAA4////7+hAAAAAAAABwEAAOj///8HAAAAKwAAAL9pAAAAAAAAcRIEAAAAAABzIAQAAAAAAGERAAAAAAAAYxAAAAAAAAB5odj/AAAAAAcBAAABAAAAexrY/wAAAAB5p5D/AAAAAL92AAAAAAAAeaFY/wAAAAAtcQEAAAAAAAUABwAAAAAAtwEAAAEAAACFEAAAsQAAAA8HAAAAAAAAtwEAAAEAAAAtdgEAAAAAALcBAAAAAAAAVQEbAAEAAAB5pIj/AAAAAL9BAAAAAAAAD5EAAAAAAAB5EQAAAAAAAHmi2P8AAAAAeyr4/wAAAAB5otD/AAAAAHsq8P8AAAAAeaLI/wAAAAB7Kuj/AAAAAAcJAAAIAAAAvxIAAAAAAAAPkgAAAAAAAL9DAAAAAAAADyMAAAAAAAB5pVD/AAAAAHs1AAAAAAAAeaLo/wAAAAB7JQgAAAAAAHmi8P8AAAAAeyUQAAAAAAB5ovj/AAAAAHslGAAAAAAAexUoAAAAAAAPlAAAAAAAAHtFIAAAAAAAlQAAAAAAAAB5ooj/AAAAAL8hAAAAAAAAD5EAAAAAAAC/lgAAAAAAAAcGAAABAAAAcRgAAAAAAAB7epD/AAAAABUINgD/AAAAv6EAAAAAAAAHAQAAmP///7+iAAAAAAAABwIAAMj///+FEAAAQAEAAHmjoP8AAAAALYMFAAAAAAAYAQAAmPMBAAAAAAAAAAAAv4IAAAAAAACFEAAAwRYAAIUQAAD/////eaeY/wAAAAAnCAAAMAAAAA+HAAAAAAAAeXEIAAAAAAB5EgAAAAAAAAcCAAABAAAAJQICAAEAAACFEAAA/////4UQAAD/////cXMpAAAAAAB7OnD/AAAAAHFzKAAAAAAAezp4/wAAAAB5cwAAAAAAAHs6gP8AAAAAeyEAAAAAAACFEAAAcQAAAHsKaP8AAAAAeXEQAAAAAAB5EgAAAAAAAAcCAAABAAAAJQIBAAEAAAAFAPD/AAAAAL95AAAAAAAABwkAACAAAAC/eAAAAAAAAAcIAAAqAAAABwcAABgAAAB7IQAAAAAAAIUQAABkAAAAewpg/wAAAAB5mQAAAAAAAHGIAAAAAAAAeXcAAAAAAAB5odD/AAAAAHmi2P8AAAAAXRJ8/wAAAAC/oQAAAAAAAAcBAADI////twIAAAEAAACFEAAADAEAAAUAd/8AAAAAvyEAAAAAAAAPYQAAAAAAAHERAAAAAAAAexpo/wAAAAC/lgAAAAAAAA8mAAAAAAAAcWcCAAAAAAC/YgAAAAAAAAcCAAAjAAAAtwEAAAAAAACFEAAATwAAAHmiiP8AAAAAewp4/wAAAAB5aCsAAAAAAAcJAAAzAAAAvyEAAAAAAAAPkQAAAAAAAHsa8P8AAAAAe4r4/wAAAAC3AQAAAAAAAHsa6P8AAAAAtwEAAAEAAAB7GoD/AAAAALcBAAABAAAAVQcBAAAAAAC3AQAAAAAAAHsacP8AAAAAD5gAAAAAAAC3AQAAAQAAAHmjaP8AAAAAVQMBAAAAAAC3AQAAAAAAAHsaaP8AAAAAvycAAAAAAAAPhwAAAAAAAL+hAAAAAAAABwEAAOj///+FEAAARAAAAHsKYP8AAAAAcXEgAAAAAABVAQIAAAAAALcBAAAAAAAAexqA/wAAAAAHBgAAAwAAAHl5IQAAAAAAeaHQ/wAAAAB5otj/AAAAAF0SBAAAAAAAv6EAAAAAAAAHAQAAyP///7cCAAABAAAAhRAAANcAAAAHCAAAKQAAAL+hAAAAAAAABwEAAMj///+FEAAAdAAAAHmh2P8AAAAAcaLn/wAAAABzKuz/AAAAAGGi4/8AAAAAYyro/wAAAAAnAQAAMAAAAA8QAAAAAAAAeaGA/wAAAABzECoAAAAAAHmhcP8AAAAAcxApAAAAAAB5oWj/AAAAAHMQKAAAAAAAe5AgAAAAAAB7cBgAAAAAAHmhYP8AAAAAexAQAAAAAAB5oXj/AAAAAHsQCAAAAAAAe2AAAAAAAAC/oQAAAAAAAAcBAADj////v6EAAAAAAAAHAQAA6P///wcAAAArAAAAv4kAAAAAAAAFAEH/AAAAAL8QAAAAAAAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAC/EAAAAAAAAJUAAAAAAAAAvycAAAAAAAC/FgAAAAAAALcBAAAgAAAAtwIAAAgAAACFEAAABvL//1UABAAAAAAAtwEAACAAAAC3AgAACAAAAIUQAAAnBQAAhRAAAP////97cBgAAAAAAHtgEAAAAAAAtwEAAAEAAAB7EAgAAAAAAHsQAAAAAAAAlQAAAAAAAAC/FgAAAAAAALcBAAAoAAAAtwIAAAgAAACFEAAA9/H//1UABAAAAAAAtwEAACgAAAC3AgAACAAAAIUQAAAYBQAAhRAAAP////95YRAAAAAAAHsa+P8AAAAAeWEIAAAAAAB7GvD/AAAAAHlhAAAAAAAAexro/wAAAAC3AQAAAQAAAHsQCAAAAAAAexAAAAAAAAB5oej/AAAAAHsQEAAAAAAAeaHw/wAAAAB7EBgAAAAAAHmh+P8AAAAAexAgAAAAAACVAAAAAAAAAL85AAAAAAAAvyYAAAAAAAC/FwAAAAAAAL+hAAAAAAAABwEAAPD///+3AwAAAAAAALcEAAAwAAAAtwUAAAAAAACFEAAAHBsAALcBAAABAAAAeaL4/wAAAABVAgEAAAAAALcBAAAAAAAAVQECAAEAAACFEAAAGAAAAIUQAAD/////eajw/wAAAAC3AQAACAAAABUIEAAAAAAAVQkGAAAAAAC/gQAAAAAAALcCAAAIAAAAhRAAAMvx//+/AQAAAAAAAFUBCgAAAAAABQAFAAAAAAC/gQAAAAAAALcCAAAIAAAAhRAAAMvx//+/AQAAAAAAAFUBBAAAAAAAv4EAAAAAAAC3AgAACAAAAIUQAADlBAAAhRAAAP////+FEAAAcAAAAHsHAAAAAAAAe2cIAAAAAACVAAAAAAAAAIUQAADbBAAAhRAAAP////95EAAAAAAAAJUAAAAAAAAAvxYAAAAAAAB5ZwgAAAAAAL9xAAAAAAAAHyEAAAAAAAA9MUwAAAAAAL8pAAAAAAAADzkAAAAAAAC3AQAAAQAAAC2SAQAAAAAAtwEAAAAAAABVARAAAQAAAL+hAAAAAAAABwEAAMD///+/kgAAAAAAALcDAAAAAAAAhRAAAJf///95o8j/AAAAAHmiwP8AAAAAv6EAAAAAAAAHAQAAsP///4UQAACS////eaG4/wAAAAAVAUQAAAAAABgBAACw8wEAAAAAAAAAAACFEAAAtBUAAIUQAAD/////v6EAAAAAAAAHAQAA8P///4UQAACK/v//eaj4/wAAAAB5o/D/AAAAAL8yAAAAAAAAD4IAAAAAAAAHAgAA/////7+BAAAAAAAAhwEAAAAAAABfEgAAAAAAALcBAAABAAAALSMBAAAAAAC3AQAAAAAAAGcHAAABAAAALZcBAAAAAAC/lwAAAAAAAFcBAAABAAAAVQEkAAAAAAC/oQAAAAAAAAcBAADg////twMAAAAAAAC/dAAAAAAAALcFAAAAAAAAhRAAAMYaAAC3AQAAAQAAAHmi6P8AAAAAVQIBAAAAAAC3AQAAAAAAAFcBAAABAAAAVQEYAAAAAAB5qeD/AAAAABUIFwAAAAAAeWIIAAAAAABVAgUAAAAAAL+RAAAAAAAAv4IAAAAAAACFEAAAdvH//1UACwAAAAAABQAGAAAAAAB5YQAAAAAAACcCAAAwAAAAtwMAAAgAAAC/lAAAAAAAAIUQAABz8f//VQAEAAAAAAC/kQAAAAAAAL+CAAAAAAAAhRAAAJAEAACFEAAA/////78BAAAAAAAAhRAAABoAAAB7dggAAAAAAHsGAAAAAAAAlQAAAAAAAACFEAAAWv7//7+hAAAAAAAABwEAAND///+/kgAAAAAAALcDAAAAAAAAhRAAAE////95odj/AAAAABUBAQAAAAAABQC8/wAAAACFEAAAfAQAAIUQAAD/////vyMAAAAAAAB5EhAAAAAAAIUQAACg////lQAAAAAAAAC/JgAAAAAAAL8XAAAAAAAAv2EAAAAAAACFEAAAmf///3sHAAAAAAAAeWEQAAAAAAB7FwgAAAAAAJUAAAAAAAAAvxAAAAAAAACVAAAAAAAAAGcBAAAgAAAAdwEAACAAAABlAQgABgAAAGUBDQACAAAAFQEeAAAAAAAYAAAAAAAAAAAAAAACAAAAFQEzAAEAAAAYAAAAAAAAAAAAAAADAAAABQAwAAAAAABlAQoACQAAABUBHQAHAAAAFQEfAAgAAAAYAAAAAAAAAAAAAAAKAAAABQAqAAAAAABlAQkABAAAABUBHQADAAAAGAAAAAAAAAAAAAAABQAAAAUAJQAAAAAAZQEIAAsAAAAVARsACgAAABgAAAAAAAAAAAAAAAwAAAAFACAAAAAAABUBGgAFAAAAGAAAAAAAAAAAAAAABwAAAAUAHAAAAAAAFQEZAAwAAAAYAAAAAAAAAAAAAAAOAAAABQAYAAAAAABnAgAAIAAAAHcCAAAgAAAAGAAAAAAAAAAAAAAAAQAAABUCEwAAAAAAvyAAAAAAAAAFABEAAAAAABgAAAAAAAAAAAAAAAgAAAAFAA4AAAAAABgAAAAAAAAAAAAAAAkAAAAFAAsAAAAAABgAAAAAAAAAAAAAAAQAAAAFAAgAAAAAABgAAAAAAAAAAAAAAAsAAAAFAAUAAAAAABgAAAAAAAAAAAAAAAYAAAAFAAIAAAAAABgAAAAAAAAAAAAAAA0AAACVAAAAAAAAAL8mAAAAAAAAcRIAAAAAAABlAhwACAAAAGUCKQADAAAAZQJlAAEAAAAVAooAAAAAAHkRCAAAAAAAexqw/wAAAAC/oQAAAAAAAAcBAABg////v6IAAAAAAAAHAgAAsP///xgDAABYoAEAAAAAAAAAAACFEAAALQEAALcBAAABAAAAexr4/wAAAAC/oQAAAAAAAAcBAADA////exrw/wAAAAC3AQAAAAAAAHsa4P8AAAAAtwEAAAIAAAB7Gtj/AAAAABgBAADY9AEAAAAAAAAAAAB7GtD/AAAAAHmhaP8AAAAAexrI/wAAAAB5oWD/AAAAAAUA/QAAAAAAZQIpAAwAAABlAmMACgAAABUChwAJAAAAtwEAAAgAAAB7GvD/AAAAALcBAAAAAAAAexr4/wAAAAB7GuD/AAAAALcBAAABAAAAexrY/wAAAAAYAQAAOPQBAAAAAAAAAAAAexrQ/wAAAAAFAPAAAAAAAGUCKAAFAAAAFQLVAAQAAAB5EggAAAAAAHkREAAAAAAAexq4/wAAAAB7KrD/AAAAAL+hAAAAAAAABwEAAKD///+/ogAAAAAAAAcCAACw////GAMAAFD5AAAAAAAAAAAAAIUQAAAIAQAAv6EAAAAAAAAHAQAAwP///3sa8P8AAAAAtwEAAAAAAAB7GuD/AAAAALcBAAABAAAAexr4/wAAAAB7Gtj/AAAAABgBAACI9AEAAAAAAAAAAAB7GtD/AAAAAHmhqP8AAAAAexrI/wAAAAB5oaD/AAAAAAUA0wAAAAAAZQIZAA4AAAAVAtcADQAAALcBAAAIAAAAexrw/wAAAAC3AQAAAAAAAHsa+P8AAAAAexrg/wAAAAC3AQAAAQAAAHsa2P8AAAAAGAEAAPjzAQAAAAAAAAAAAHsa0P8AAAAABQDHAAAAAAAVAl0ABgAAABUCZwAHAAAAtwEAAAgAAAB7GvD/AAAAALcBAAAAAAAAexr4/wAAAAB7GuD/AAAAALcBAAABAAAAexrY/wAAAAAYAQAAWPQBAAAAAAAAAAAAexrQ/wAAAAAFALoAAAAAABUCZgAPAAAAFQJwABAAAAB5ExAAAAAAAHkSCAAAAAAAv2EAAAAAAACFEAAA8xEAAAUAtwAAAAAAFQJ1AAIAAAB5EQgAAAAAAHsasP8AAAAAv6EAAAAAAAAHAQAAgP///7+iAAAAAAAABwIAALD///8YAwAAIJwBAAAAAAAAAAAAhRAAAMgAAAC3AQAAAQAAAHsa+P8AAAAAv6EAAAAAAAAHAQAAwP///3sa8P8AAAAAtwEAAAAAAAB7GuD/AAAAALcBAAACAAAAexrY/wAAAAAYAQAAuPQBAAAAAAAAAAAAexrQ/wAAAAB5oYj/AAAAAHsayP8AAAAAeaGA/wAAAAAFAJgAAAAAABUCdAALAAAAtwEAAAgAAAB7GvD/AAAAALcBAAAAAAAAexr4/wAAAAB7GuD/AAAAALcBAAABAAAAexrY/wAAAAAYAQAAGPQBAAAAAAAAAAAAexrQ/wAAAAAFAI0AAAAAAHERAQAAAAAAcxqw/wAAAAC/oQAAAAAAAAcBAABQ////v6IAAAAAAAAHAgAAsP///xgDAADYgwEAAAAAAAAAAACFEAAApgAAALcBAAABAAAAexr4/wAAAAC/oQAAAAAAAAcBAADA////exrw/wAAAAC3AQAAAAAAAHsa4P8AAAAAtwEAAAIAAAB7Gtj/AAAAABgBAAD49AEAAAAAAAAAAAB7GtD/AAAAAHmhWP8AAAAAexrI/wAAAAB5oVD/AAAAAAUAcwAAAAAAtwEAAAgAAAB7GvD/AAAAALcBAAAAAAAAexr4/wAAAAB7GuD/AAAAALcBAAABAAAAexrY/wAAAAAYAQAASPQBAAAAAAAAAAAAexrQ/wAAAAAFAGkAAAAAALcBAAAIAAAAexrw/wAAAAC3AQAAAAAAAHsa+P8AAAAAexrg/wAAAAC3AQAAAQAAAHsa2P8AAAAAGAEAAHj0AQAAAAAAAAAAAHsa0P8AAAAABQBeAAAAAAC3AQAACAAAAHsa8P8AAAAAtwEAAAAAAAB7Gvj/AAAAAHsa4P8AAAAAtwEAAAEAAAB7Gtj/AAAAABgBAABo9AEAAAAAAAAAAAB7GtD/AAAAAAUAUwAAAAAAtwEAAAgAAAB7GvD/AAAAALcBAAAAAAAAexr4/wAAAAB7GuD/AAAAALcBAAABAAAAexrY/wAAAAAYAQAA6PMBAAAAAAAAAAAAexrQ/wAAAAAFAEgAAAAAALcBAAAIAAAAexrw/wAAAAC3AQAAAAAAAHsa+P8AAAAAexrg/wAAAAC3AQAAAQAAAHsa2P8AAAAAGAEAANjzAQAAAAAAAAAAAHsa0P8AAAAABQA9AAAAAAB5EQgAAAAAAHsasP8AAAAAv6EAAAAAAAAHAQAAcP///7+iAAAAAAAABwIAALD///8YAwAA8J8BAAAAAAAAAAAAhRAAAFMAAAC3AQAAAQAAAHsa+P8AAAAAv6EAAAAAAAAHAQAAwP///3sa8P8AAAAAtwEAAAAAAAB7GuD/AAAAALcBAAACAAAAexrY/wAAAAAYAQAA2PQBAAAAAAAAAAAAexrQ/wAAAAB5oXj/AAAAAHsayP8AAAAAeaFw/wAAAAAFACMAAAAAALcBAAAIAAAAexrw/wAAAAC3AQAAAAAAAHsa+P8AAAAAexrg/wAAAAC3AQAAAQAAAHsa2P8AAAAAGAEAACj0AQAAAAAAAAAAAHsa0P8AAAAABQAZAAAAAABhEQQAAAAAAGMasP8AAAAAv6EAAAAAAAAHAQAAkP///7+iAAAAAAAABwIAALD///8YAwAAgJQBAAAAAAAAAAAAhRAAADgAAAC3AQAAAQAAAHsa+P8AAAAAv6EAAAAAAAAHAQAAwP///3sa8P8AAAAAtwEAAAAAAAB7GuD/AAAAALcBAAACAAAAexrY/wAAAAAYAQAAmPQBAAAAAAAAAAAAexrQ/wAAAAB5oZj/AAAAAHsayP8AAAAAeaGQ/wAAAAB7GsD/AAAAAL+iAAAAAAAABwIAAND///+/YQAAAAAAAIUQAABBEQAAlQAAAAAAAAC3AQAACAAAAHsa8P8AAAAAtwEAAAAAAAB7Gvj/AAAAAHsa4P8AAAAAtwEAAAEAAAB7Gtj/AAAAABgBAAAI9AEAAAAAAAAAAAB7GtD/AAAAAAUA8P8AAAAAvyQAAAAAAAB5EwgAAAAAAHkSAAAAAAAAv0EAAAAAAACFEAAAKhEAAJUAAAAAAAAAeSQYAAAAAAC/MgAAAAAAAI0AAAAEAAAAlQAAAAAAAAC/IwAAAAAAAHkSCAAAAAAAeREAAAAAAACFEAAAWhEAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAvyEAAAAAAAAYAgAAOMQBAAAAAAAAAAAAtwMAAAgAAACFEAAADxEAAJUAAAAAAAAAhRAAAP////+VAAAAAAAAAIUQAACtAwAAvwYAAAAAAABVBgYAAAAAALcBAAAAAAAAtwIAAAAAAAC3AwAAAAAAALcEAAAAAAAAhRAAAP////+FEAAA/////7cBAAAAAAAAexrI/wAAAAB7GsD/AAAAAHsauP8AAAAAexqw/wAAAAB7Gqj/AAAAAHsaoP8AAAAAexqY/wAAAAB7GpD/AAAAAHsaiP8AAAAAexqA/wAAAAB7Gnj/AAAAAHsacP8AAAAAexpo/wAAAAB7GmD/AAAAAHsaWP8AAAAAexpQ/wAAAAC/oQAAAAAAAAcBAABA////v2IAAAAAAACFEAAAmAMAAHmhSP8AAAAAeaJA/wAAAAC/IwAAAAAAAA8TAAAAAAAAv6cAAAAAAAAHBwAA6P///79xAAAAAAAAhRAAAJABAAC/oQAAAAAAAAcBAADQ////v3IAAAAAAACFEAAAxwEAAHmh2P8AAAAAeaLQ/wAAAAAdEhwAAAAAAHmj4P8AAAAAtwQAAIAAAAAFAAgAAAAAAL+lAAAAAAAABwUAAFD///8PNQAAAAAAAHEgAAAAAAAAcwUAAAAAAAAHAwAAAQAAAAcCAAABAAAAHSERAAAAAAAtNPf/AAAAAL9hAAAAAAAAhRAAAIADAAC/BwAAAAAAAL9hAAAAAAAAhRAAAH8DAABnBwAAIAAAAHcHAAAgAAAAZwAAACAAAAB3AAAAIAAAAL+hAAAAAAAABwEAAFD///+3AgAAgAAAAL9zAAAAAAAAvwQAAAAAAACFEAAA/////4UQAAD/////hRAAAEoCAAAFAO7/AAAAALcBAAAAAAAAtwIAAAAAAAC3AwAAAAAAALcEAAAAAAAAhRAAAP////+FEAAA/////78mAAAAAAAAvxcAAAAAAAC3AQAAAQAAABUGEAAAAAAAVQMGAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAGfv//+/AQAAAAAAAFUBCgAAAAAABQAFAAAAAAC/YQAAAAAAALcCAAABAAAAhRAAAGfv//+/AQAAAAAAAFUBBAAAAAAAv2EAAAAAAAC3AgAAAQAAAIUQAACBAgAAhRAAAP////+FEAAAVQEAAHsHAAAAAAAAe2cIAAAAAACVAAAAAAAAAL8nAAAAAAAAvxYAAAAAAAC3AgAAAAAAAHlxCAAAAAAAvxAAAAAAAAAfMAAAAAAAAD1AVgAAAAAAvzgAAAAAAAAPSAAAAAAAALcCAAABAAAALYMBAAAAAAC3AgAAAAAAAFUFAQAAAAAABQAQAAAAAABXAgAAAQAAAFUCAQAAAAAABQAXAAAAAAC/oQAAAAAAAAcBAACw////v4IAAAAAAAC3AwAAAAAAAIUQAAAuAgAAeaO4/wAAAAB5orD/AAAAAL+hAAAAAAAABwEAAKD///+FEAAAKQIAAHmhoP8AAAAAeaKo/wAAAAAFADwAAAAAAFcCAAABAAAAFQIMAAAAAAC/oQAAAAAAAAcBAADw////v4IAAAAAAAC3AwAAAAAAAIUQAAAfAgAAeaHw/wAAAAB5ovj/AAAAAAUAMgAAAAAAZwEAAAEAAAAtgQEAAAAAAL+BAAAAAAAAvxgAAAAAAAC/oQAAAAAAAAcBAADg////hRAAAAACAAB5qej/AAAAAHmj4P8AAAAAvzIAAAAAAAAPkgAAAAAAAAcCAAD/////v5EAAAAAAACHAQAAAAAAAF8SAAAAAAAAtwEAAAEAAAAtIwEAAAAAALcBAAAAAAAAVwEAAAEAAABVARYAAAAAAL+hAAAAAAAABwEAAND///+3AwAAAAAAAL+EAAAAAAAAtwUAAAAAAACFEAAAWBgAALcBAAABAAAAeaLY/wAAAABVAgEAAAAAALcBAAAAAAAAVwEAAAEAAABVAQoAAAAAAHmk0P8AAAAAFQkJAAAAAAB5cggAAAAAAHtKmP8AAAAAVQISAAAAAAC/QQAAAAAAAL+SAAAAAAAAhRAAAAfv//9VABYAAAAAAAUAEQAAAAAAhRAAAOABAAC/oQAAAAAAAAcBAADA////v0IAAAAAAAC3AwAAAAAAAIUQAADsAQAAeaHA/wAAAAB5osj/AAAAAHsmEAAAAAAAexYIAAAAAAC3AgAAAQAAAHsmAAAAAAAAlQAAAAAAAAB5cQAAAAAAALcDAAABAAAAhRAAAPnu//9VAAQAAAAAAHmhmP8AAAAAv5IAAAAAAACFEAAAFgIAAIUQAAD/////vwEAAAAAAACFEAAA6QAAAHuHCAAAAAAAewcAAAAAAAC3AgAAAAAAAAUA8P8AAAAAeRAAAAAAAACVAAAAAAAAAL80AAAAAAAAvyMAAAAAAAC/EgAAAAAAAL+hAAAAAAAABwEAAOj///+3BQAAAQAAAIUQAACK////eaHo/wAAAAAVAQEAAQAAAJUAAAAAAAAAeaH4/wAAAAAVAQEAAAAAAAUAAgAAAAAAhRAAAPsBAACFEAAA/////xgBAAAY9QEAAAAAAAAAAACFEAAA7RIAAIUQAAD/////vyYAAAAAAAC/EgAAAAAAAL+hAAAAAAAABwEAAPD///+FEAAACgEAAHmi+P8AAAAAeaHw/wAAAAC/YwAAAAAAAIUQAADMEQAAlQAAAAAAAABxIgAAAAAAAGUCBwAIAAAAZQINAAMAAABlAiQAAQAAABUCLQAAAAAAGAIAANbZAQAAAAAAAAAAALcDAAARAAAABQBPAAAAAABlAgwADAAAAGUCIgAKAAAAFQIqAAkAAAAYAgAATdkBAAAAAAAAAAAAtwMAABUAAAAFAEgAAAAAAGUCCwAFAAAAFQI/AAQAAAAYAgAApdkBAAAAAAAAAAAAtwMAAA0AAAAFAEIAAAAAAGUCCwAOAAAAFQI9AA0AAAAYAgAAF9kBAAAAAAAAAAAAtwMAAAoAAAAFADwAAAAAABUCHQAGAAAAFQIfAAcAAAAYAgAAd9kBAAAAAAAAAAAAtwMAAAsAAAAFADYAAAAAABUCHgAPAAAAFQIhABAAAAAYAgAA3tgBAAAAAAAAAAAAtwMAABYAAAAFADAAAAAAABUCIAACAAAAGAIAALDDAQAAAAAAAAAAALcDAAAQAAAABQArAAAAAAAVAh8ACwAAABgCAAAq2QEAAAAAAAAAAAC3AwAADAAAAAUAJgAAAAAAGAIAAIDDAQAAAAAAAAAAALcDAAAQAAAABQAiAAAAAAAYAgAAYtkBAAAAAAAAAAAAtwMAABUAAAAFAB4AAAAAABgCAACX2QEAAAAAAAAAAAAFAAoAAAAAABgCAACC2QEAAAAAAAAAAAC3AwAAFQAAAAUAFwAAAAAAGAIAAALZAQAAAAAAAAAAALcDAAAVAAAABQATAAAAAAAYAgAA9NgBAAAAAAAAAAAAtwMAAA4AAAAFAA8AAAAAABgCAADE2QEAAAAAAAAAAAC3AwAAEgAAAAUACwAAAAAAGAIAADbZAQAAAAAAAAAAALcDAAAXAAAABQAHAAAAAAAYAgAAstkBAAAAAAAAAAAAtwMAABIAAAAFAAMAAAAAABgCAAAh2QEAAAAAAAAAAAC3AwAACQAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAL8mAAAAAAAAcRIAAAAAAAAVAgUAAAAAABUCOAABAAAAeREIAAAAAAC/YgAAAAAAAIUQAABZAQAABQBZAAAAAABhEgQAAAAAAGMqlP8AAAAAv6cAAAAAAAAHBwAAmP///79xAAAAAAAAhRAAAHIBAAC/oQAAAAAAAAcBAABg////v3IAAAAAAAAYAwAAcAEBAAAAAAAAAAAAhRAAAMEAAAB5qGD/AAAAAHmpaP8AAAAAv6EAAAAAAAAHAQAAUP///7+iAAAAAAAABwIAAJT///8YAwAAeJ8BAAAAAAAAAAAAhRAAALIAAAB7mrj/AAAAAHuKsP8AAAAAtwEAAAIAAAB7Gvj/AAAAAL+hAAAAAAAABwEAALD///97GvD/AAAAALcBAAAAAAAAexrg/wAAAAC3AQAAAwAAAHsa2P8AAAAAGAEAAFD1AQAAAAAAAAAAAHsa0P8AAAAAeaFY/wAAAAB7Gsj/AAAAAHmhUP8AAAAAexrA/wAAAAC/ogAAAAAAAAcCAADQ////v2EAAAAAAACFEAAAjw8AAL8GAAAAAAAAv3EAAAAAAACFEAAAcgAAAHmioP8AAAAAFQIqAAAAAAB5oZj/AAAAALcDAAABAAAAhRAAADfu//8FACYAAAAAAHERAQAAAAAAcxqU/wAAAAC/oQAAAAAAAAcBAACA////v6IAAAAAAAAHAgAAlP///4UQAABi////eaGI/wAAAAB7Grj/AAAAAHmhgP8AAAAAexqw/wAAAAC/oQAAAAAAAAcBAABw////v6IAAAAAAAAHAgAAsP///xgDAADQCgEAAAAAAAAAAACFEAAAigAAAL+hAAAAAAAABwEAAJj///97GvD/AAAAALcBAAAAAAAAexrg/wAAAAC3AQAAAQAAAHsa+P8AAAAAexrY/wAAAAAYAQAAQPUBAAAAAAAAAAAAexrQ/wAAAAB5oXj/AAAAAHsaoP8AAAAAeaFw/wAAAAB7Gpj/AAAAAL+iAAAAAAAABwIAAND///+/YQAAAAAAAIUQAABhDwAAvwYAAAAAAAC/YAAAAAAAAJUAAAAAAAAAhRAAAOAAAACVAAAAAAAAALcEAAAAAAAAe0EQAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAC/EAAAAAAAAJUAAAAAAAAAvzcAAAAAAAC/KAAAAAAAAL8WAAAAAAAAv6EAAAAAAAAHAQAAyP///7cJAAAAAAAAv3IAAAAAAAC3AwAAAAAAAIUQAACL/v//eaHQ/wAAAAB7GuD/AAAAAHmhyP8AAAAAexrY/wAAAAB7muj/AAAAAL+BAAAAAAAAD3EAAAAAAAB7Gvj/AAAAAHuK8P8AAAAAv6EAAAAAAAAHAQAAuP///7+iAAAAAAAABwIAAPD///+FEAAAcAAAAHmhuP8AAAAAexqw/wAAAAB5qMD/AAAAAL+pAAAAAAAABwkAANj///+/kQAAAAAAALcCAAAAAAAAv4MAAAAAAACFEAAA+/7//3mn6P8AAAAAv3EAAAAAAAAPgQAAAAAAAHsa6P8AAAAAv5EAAAAAAACFEAAA8/7//w9wAAAAAAAAeaLo/wAAAAAfcgAAAAAAAL8BAAAAAAAAeaOw/wAAAAC/hAAAAAAAAIUQAABgAAAAeaHo/wAAAAB7FhAAAAAAAHmh4P8AAAAAexYIAAAAAAB5odj/AAAAAHsWAAAAAAAAlQAAAAAAAAB5IxAAAAAAAHsxEAAAAAAAeSMIAAAAAAB7MQgAAAAAAHkiAAAAAAAAeyEAAAAAAACVAAAAAAAAAIUQAADd/v//lQAAAAAAAAC/JgAAAAAAAL8XAAAAAAAAv2EAAAAAAACFEAAA2P7//3sHAAAAAAAAeWEQAAAAAAB7FwgAAAAAAJUAAAAAAAAAvyYAAAAAAAB5FwAAAAAAAL9hAAAAAAAAhRAAACYPAABVAAgAAAAAAL9hAAAAAAAAhRAAACcPAABVAAEAAAAAAAUACAAAAAAAv3EAAAAAAAC/YgAAAAAAAIUQAABUAQAABQAHAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAAE0BAAAFAAMAAAAAAL9xAAAAAAAAv2IAAAAAAACFEAAAuRIAAJUAAAAAAAAAvyMAAAAAAAB5EggAAAAAAHkRAAAAAAAAhRAAAKUQAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAL9ZAAAAAAAAvzcAAAAAAAC/JgAAAAAAAL+RAAAAAAAAtwIAAAAAAACFEAAA/////78IAAAAAAAAFQgJAAAAAAAtlwEAAAAAAL95AAAAAAAAv4EAAAAAAAC/YgAAAAAAAL+TAAAAAAAAhRAAAPMSAAC/cQAAAAAAAL9iAAAAAAAAhRAAAP////+/gAAAAAAAAJUAAAAAAAAAGAEAAPPZAQAAAAAAAAAAALcCAAAuAAAAhRAAALz9//+FEAAACP7//4UQAAD/////eSMAAAAAAAB7MQAAAAAAAHkiCAAAAAAAHzIAAAAAAAB7IQgAAAAAAJUAAAAAAAAAvzUAAAAAAAC/IwAAAAAAAHs6UP8AAAAAe0pY/wAAAABdQwMAAAAAAL9SAAAAAAAAhRAAANsSAACVAAAAAAAAAL+hAAAAAAAABwEAAFD///97GsD/AAAAAL+hAAAAAAAABwEAAFj///97Gsj/AAAAALcBAAAIAAAAexrw/wAAAAC3AQAAAQAAAHsa2P8AAAAAGAEAALD1AQAAAAAAAAAAAHsa0P8AAAAAtwEAAAAAAAB7Gvj/AAAAAHsa4P8AAAAAv6EAAAAAAAAHAQAAQP///7+iAAAAAAAABwIAAMD///8YAwAAKAoBAAAAAAAAAAAAhRAAALP///95p0D/AAAAAHmoSP8AAAAAv6EAAAAAAAAHAQAAMP///7+iAAAAAAAABwIAAMj///8YAwAAKAoBAAAAAAAAAAAAhRAAAKr///95qTD/AAAAAHmmOP8AAAAAv6EAAAAAAAAHAQAAIP///7+iAAAAAAAABwIAAND///8YAwAAUGUBAAAAAAAAAAAAhRAAAKf///97aqj/AAAAAHuaoP8AAAAAe4qY/wAAAAB7epD/AAAAAL+hAAAAAAAABwEAAJD///97GoD/AAAAALcBAAAAAAAAexpw/wAAAAC3AQAAAwAAAHsaiP8AAAAAexpo/wAAAAAYAQAAgPUBAAAAAAAAAAAAexpg/wAAAAB5oSj/AAAAAHsauP8AAAAAeaEg/wAAAAB7GrD/AAAAAL+hAAAAAAAABwEAAGD///8YAgAAwPUBAAAAAAAAAAAAhRAAAIcRAACFEAAA/////5UAAAAAAAAAGAAAAEZtCnkAAAAAPZqfz5UAAAAAAAAAtwIAAAEAAAB7IQgAAAAAAHshAAAAAAAAlQAAAAAAAACVAAAAAAAAALcCAAAAAAAAhRAAAP////+VAAAAAAAAAL8TAAAAAAAAvyEAAAAAAAC/MgAAAAAAAIUQAAD/////lQAAAAAAAAC/RQAAAAAAAL80AAAAAAAAvyMAAAAAAAC/EgAAAAAAALcBAAABAAAAhRAAAID///+VAAAAAAAAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAeRMAAAAAAAB5EQgAAAAAAHkUOAAAAAAAvzEAAAAAAACNAAAABAAAAJUAAAAAAAAAhRAAAEn9//+FEAAA/////2EVFAAAAAAAYRQQAAAAAAB5EwgAAAAAAHkSAAAAAAAAv6EAAAAAAAAHAQAA0P///4UQAADyAAAAtwEAAAAAAAB7GrD/AAAAABgBAADY9QEAAAAAAAAAAAB7Gqj/AAAAALcBAAABAAAAexqg/wAAAAB5odD/AAAAAHsauP8AAAAAeaHY/wAAAAB7GsD/AAAAAHmh4P8AAAAAexrI/wAAAAC/oQAAAAAAAAcBAACg////hRAAADH9//+FEAAA/////78WAAAAAAAAv6EAAAAAAAAHAQAA0P///xgCAADN2gEAAAAAAAAAAAC3AwAAFAAAAIUQAADm/v//eaHg/wAAAAB7Gvj/AAAAAHmi2P8AAAAAeyrw/wAAAAB5o9D/AAAAAHs66P8AAAAAexYQAAAAAAB7JggAAAAAAHs2AAAAAAAAlQAAAAAAAAAYAQAA+PUBAAAAAAAAAAAAhRAAAPMQAACFEAAA/////4UQAABY////hRAAAP////+/JgAAAAAAAL8XAAAAAAAAv6EAAAAAAAAHAQAAcP///7+iAAAAAAAABwIAAID///+/owAAAAAAAAcDAAAAAAAAhRAAAGsGAAB5o3j/AAAAAHmicP8AAAAAv6EAAAAAAAAHAQAAYP///4UQAABmBgAAtwEAAAAAAAB5omj/AAAAAHmjYP8AAAAAHyMAAAAAAAC3BAAACgAAAAUADAAAAAAAvyUAAAAAAAAPFQAAAAAAAHMF//8AAAAABwEAAP////93BwAABAAAAFUHBgAAAAAABwEAAIAAAAC3AgAAgQAAAC0SDAAAAAAAtwIAAIAAAACFEAAAtgQAAIUQAAD/////HRP5/wAAAAC/dQAAAAAAAFcFAAAPAAAAv1AAAAAAAABHAAAAMAAAAC1U7v8AAAAABwUAAFcAAAC/UAAAAAAAAAUA6/8AAAAAv6IAAAAAAAAHAgAAgP///w8SAAAAAAAAeyoA8AAAAAC3AgAAgAAAAB8SAAAAAAAAeyoI8AAAAAC/pQAAAAAAAL9hAAAAAAAAtwIAAAEAAAAYAwAALdsBAAAAAAAAAAAAtwQAAAIAAACFEAAA6AsAAJUAAAAAAAAAvyYAAAAAAAC/FwAAAAAAAL+hAAAAAAAABwEAAHD///+/ogAAAAAAAAcCAACA////v6MAAAAAAAAHAwAAAAAAAIUQAAAzBgAAeaN4/wAAAAB5onD/AAAAAL+hAAAAAAAABwEAAGD///+FEAAALgYAALcBAAAAAAAAeaJo/wAAAAB5o2D/AAAAAB8jAAAAAAAAtwQAAAoAAAAFAAwAAAAAAL8lAAAAAAAADxUAAAAAAABzBf//AAAAAAcBAAD/////dwcAAAQAAABVBwYAAAAAAAcBAACAAAAAtwIAAIEAAAAtEgwAAAAAALcCAACAAAAAhRAAAH4EAACFEAAA/////x0T+f8AAAAAv3UAAAAAAABXBQAADwAAAL9QAAAAAAAARwAAADAAAAAtVO7/AAAAAAcFAAA3AAAAv1AAAAAAAAAFAOv/AAAAAL+iAAAAAAAABwIAAID///8PEgAAAAAAAHsqAPAAAAAAtwIAAIAAAAAfEgAAAAAAAHsqCPAAAAAAv6UAAAAAAAC/YQAAAAAAALcCAAABAAAAGAMAAC3bAQAAAAAAAAAAALcEAAACAAAAhRAAALALAACVAAAAAAAAAGEQAAAAAAAAZwAAACAAAADHAAAAIAAAAJUAAAAAAAAAeRAAAAAAAACVAAAAAAAAAHEQAAAAAAAAlQAAAAAAAAB5EQAAAAAAAIUQAACG////lQAAAAAAAAB5EQAAAAAAAIUQAAC7////lQAAAAAAAAC/JgAAAAAAAL8XAAAAAAAAv2EAAAAAAACFEAAAww0AAFUACQAAAAAAv2EAAAAAAACFEAAAxA0AAFUAAQAAAAAABQAKAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAAPH///9VAAoAAAAAAAUADAAAAAAAv3EAAAAAAAC/YgAAAAAAAIUQAADp////VQAFAAAAAAAFAAcAAAAAAL9xAAAAAAAAv2IAAAAAAACFEAAAVBEAABUAAwAAAAAAhRAAANUJAAC3CAAAAQAAAAUAKwAAAAAAtwEAAAgAAAB7GvD/AAAAALcBAAAAAAAAexr4/wAAAAB7GuD/AAAAALcIAAABAAAAe4rY/wAAAAAYAQAAKPYBAAAAAAAAAAAAexrQ/wAAAAC/ogAAAAAAAAcCAADQ////v2EAAAAAAACFEAAAhQ0AABUAAgAAAAAAhRAAAMMJAAAFABoAAAAAAAcHAAAIAAAAv2EAAAAAAACFEAAAmQ0AAFUACgAAAAAAv2EAAAAAAACFEAAAmg0AAFUAAQAAAAAABQAMAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAAMf///+3CAAAAAAAAFUADAAAAAAABQAMAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAAL7///+3CAAAAAAAAFUABgAAAAAABQAGAAAAAAC/cQAAAAAAAL9iAAAAAAAAhRAAACgRAAC3CAAAAAAAABUAAQAAAAAABQDS/wAAAAC/gAAAAAAAAJUAAAAAAAAAhRAAAA4QAACVAAAAAAAAAL8QAAAAAAAABwAAABgAAACVAAAAAAAAAGNRFAAAAAAAY0EQAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB5IwgAAAAAAHsxCAAAAAAAeSIAAAAAAAB7IQAAAAAAAJUAAAAAAAAAYRAQAAAAAACVAAAAAAAAAGEQFAAAAAAAlQAAAAAAAAB5IygAAAAAAHsxKAAAAAAAeSMgAAAAAAB7MSAAAAAAAHkjGAAAAAAAezEYAAAAAAB5IxAAAAAAAHsxEAAAAAAAeSMIAAAAAAB7MQgAAAAAAHkiAAAAAAAAeyEAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAALcAAAAAAAAAewEgAAAAAAB7MQgAAAAAAHshAAAAAAAAHyMAAAAAAAB7URgAAAAAAHtBEAAAAAAAH0UAAAAAAAB3BQAABAAAAHcDAAAEAAAALVMBAAAAAAC/NQAAAAAAAHtRKAAAAAAAlQAAAAAAAAC3AAAAAAAAAHsBIAAAAAAAezEIAAAAAAB7IQAAAAAAAB8jAAAAAAAAe1EYAAAAAAB7QRAAAAAAAB9FAAAAAAAAdwUAAAQAAAB3AwAABgAAAC1TAQAAAAAAvzUAAAAAAAB7USgAAAAAAJUAAAAAAAAAv0gAAAAAAAC/OQAAAAAAAL8mAAAAAAAAvxcAAAAAAAC/kQAAAAAAALcCAAAIAAAAhRAAABgEAAC3AQAAAAAAAHsa+P8AAAAAFQBIAAAAAAB7evD/AAAAAL+CAAAAAAAALYABAAAAAAC/AgAAAAAAALcBAAAAAAAAv5QAAAAAAAAPJAAAAAAAAHsq+P8AAAAAv5MAAAAAAAAFAAQAAAAAAA9xAAAAAAAABwIAAPz///8HAwAABAAAAB1QNgAAAAAAv0UAAAAAAAAfNQAAAAAAACUFAwADAAAAtwQAAAAAAAB5p/D/AAAAAAUAHwAAAAAAv2UAAAAAAABXBQAA/wAAAHEwAAAAAAAAtwcAAAEAAABdUAEAAAAAALcHAAAAAAAAD3EAAAAAAAAdUCgAAAAAAL9lAAAAAAAAVwUAAP8AAABxMAEAAAAAALcHAAABAAAAXVABAAAAAAC3BwAAAAAAAA9xAAAAAAAAHVAgAAAAAAC/ZQAAAAAAAFcFAAD/AAAAcTACAAAAAAC3BwAAAQAAAF1QAQAAAAAAtwcAAAAAAAAPcQAAAAAAAB1QGAAAAAAAv2UAAAAAAABXBQAA/wAAAHEwAwAAAAAAtwcAAAEAAABdUNn/AAAAALcHAAAAAAAABQDX/wAAAAAVAhQAAAAAAAcCAAD/////vzUAAAAAAAAPRQAAAAAAAAcEAAABAAAAcVUAAAAAAAC/YAAAAAAAAFcAAAD/AAAAXQX3/wAAAAC3AgAAAQAAAB0FAQAAAAAAtwIAAAAAAAAHAgAAAQAAAFcCAAABAAAADyEAAAAAAAAPQQAAAAAAAAcBAAD/////hRAAAJsPAAC3AQAAAQAAAHmn8P8AAAAABQB0AAAAAAC3AQAAEAAAAC2BLAAAAAAAv4EAAAAAAAAHAQAA8P///3mi+P8AAAAALRIoAAAAAAB7evD/AAAAAL9iAAAAAAAAVwIAAP8AAAAYAwAAAQEBAQAAAAABAQEBLzIAAAAAAAAYAwAA//7+/gAAAAD+/v7+eaf4/wAAAAC/lQAAAAAAAA91AAAAAAAAeVAAAAAAAACvIAAAAAAAAL90AAAAAAAAvwcAAAAAAAAPNwAAAAAAAKcAAAD/////X3AAAAAAAAB5VQgAAAAAAK8lAAAAAAAAv1cAAAAAAAAPNwAAAAAAAKcFAAD/////X3UAAAAAAAC/RwAAAAAAAE8FAAAAAAAAGAQAAICAgIAAAAAAgICAgF9FAAAAAAAAVQUCAAAAAAAHBwAAEAAAAD1x6f8AAAAAv3EAAAAAAAB5p/D/AAAAAHsa+P8AAAAAPRgEAAAAAAB5ofj/AAAAAL+CAAAAAAAAhRAAAFIDAACFEAAA/////7+RAAAAAAAAD4EAAAAAAAB5ovj/AAAAAB8oAAAAAAAADykAAAAAAAC3AAAAAAAAAAUABAAAAAAAD0AAAAAAAAAHCAAA/P///wcJAAAEAAAAHSM2AAAAAAC/EgAAAAAAAB+SAAAAAAAAJQICAAMAAAC3AQAAAAAAAAUAHwAAAAAAv2IAAAAAAABXAgAA/wAAAHGTAAAAAAAAtwQAAAEAAABdIwEAAAAAALcEAAAAAAAAD0AAAAAAAAAdIykAAAAAAL9iAAAAAAAAVwIAAP8AAABxkwEAAAAAALcEAAABAAAAXSMBAAAAAAC3BAAAAAAAAA9AAAAAAAAAHSMhAAAAAAC/YgAAAAAAAFcCAAD/AAAAcZMCAAAAAAC3BAAAAQAAAF0jAQAAAAAAtwQAAAAAAAAPQAAAAAAAAB0jGQAAAAAAv2IAAAAAAABXAgAA/wAAAHGTAwAAAAAAtwQAAAEAAABdI9r/AAAAALcEAAAAAAAABQDY/wAAAAAVCBkAAAAAAAcIAAD/////v5IAAAAAAAAPEgAAAAAAAAcBAAABAAAAcSMAAAAAAAC/ZAAAAAAAAFcEAAD/AAAAXUP3/wAAAAC3AgAAAQAAAB1DAQAAAAAAtwIAAAAAAAAHAgAAAQAAAFcCAAABAAAADwIAAAAAAAAPEgAAAAAAAAcCAAD/////vyAAAAAAAAC/AQAAAAAAAIUQAAAnDwAAtwEAAAEAAAB5ovj/AAAAAA8gAAAAAAAAewcIAAAAAAB7FwAAAAAAAJUAAAAAAAAADxAAAAAAAAC3AQAAAAAAAAUA+P8AAAAAvxYAAAAAAAB5IQAAAAAAAHkVEAAAAAAAeRIIAAAAAAAdJUYAAAAAAL8jAAAAAAAABwMAAAEAAAB7MQgAAAAAAHEkAAAAAAAAv0AAAAAAAABnAAAAOAAAAMcAAAA4AAAAZQA8AP////+3CAAAAAAAAL9JAAAAAAAAVwkAAB8AAAC/VwAAAAAAAB1TBgAAAAAAvyMAAAAAAAAHAwAAAgAAAHsxCAAAAAAAcSgBAAAAAABXCAAAPwAAAL83AAAAAAAAe3r4/wAAAAC/lwAAAAAAAGcHAAAGAAAAv4AAAAAAAABPcAAAAAAAACUEAQDfAAAABQAkAAAAAAB7mvD/AAAAALcHAAAAAAAAv1AAAAAAAAB5qfj/AAAAAB1ZBgAAAAAAv5MAAAAAAAAHAwAAAQAAAHsxCAAAAAAAcZcAAAAAAABXBwAAPwAAAL8wAAAAAAAAvwkAAAAAAABnCAAABgAAAE+HAAAAAAAAeajw/wAAAABnCAAADAAAAL9wAAAAAAAAT4AAAAAAAAC3CAAA8AAAAC1IEAAAAAAAtwQAAAAAAAAdWQUAAAAAAL+TAAAAAAAABwMAAAEAAAB7MQgAAAAAAHGUAAAAAAAAVwQAAD8AAABnBwAABgAAAHmp8P8AAAAAZwkAABIAAABXCQAAAAAcAE+XAAAAAAAAT0cAAAAAAAC3BQAAAAARAL9wAAAAAAAAFQcKAAAAEQAfIwAAAAAAAHkUAAAAAAAAD0MAAAAAAAB7MQAAAAAAAL8FAAAAAAAABQAEAAAAAAC/QAAAAAAAAAUA+P8AAAAAhRAAANEOAAC3BQAAAAARAGNWCAAAAAAAe0YAAAAAAACVAAAAAAAAAHkjEAAAAAAAezEQAAAAAAB5IwgAAAAAAHsxCAAAAAAAeSIAAAAAAAB7IQAAAAAAAJUAAAAAAAAAvxAAAAAAAACVAAAAAAAAAL84AAAAAAAAvycAAAAAAAC/FgAAAAAAAL+hAAAAAAAABwEAAOD///+FEAAAJAAAAGGh6f8AAAAAYxrY/wAAAABhoez/AAAAAGMa2/8AAAAAcaHo/wAAAAAVARkAAgAAAHmi4P8AAAAAYaPb/wAAAABjOvP/AAAAAGGj2P8AAAAAYzrw/wAAAABho/P/AAAAAGM64/8AAAAAYaPw/wAAAABjOuD/AAAAAGGj4P8AAAAAYzr4/wAAAABho+P/AAAAAGM6+/8AAAAAYaP7/wAAAABjOuP/AAAAAGGj+P8AAAAAYzrg/wAAAABzFhAAAAAAAHsmCAAAAAAAYaHj/wAAAABjFhQAAAAAAGGh4P8AAAAAYxYRAAAAAAC3AQAAAQAAAAUAAwAAAAAAe4YQAAAAAAB7dggAAAAAALcBAAAAAAAAexYAAAAAAACVAAAAAAAAAL83AAAAAAAAvykAAAAAAAB7GvD/AAAAAL94AAAAAAAABwgAAPH///8lBwEADwAAALcIAAAAAAAAv5EAAAAAAAC3AgAACAAAAIUQAADGAgAAFQcHAAAAAAC3AgAAAAAAABgDAACAgICAAAAAAICAgIC3AQAAAAAAAAUABgAAAAAABwEAAAEAAAAtFwQAAAAAALcBAAACAAAAeaLw/wAAAABzEggAAAAAAAUArAAAAAAAv5QAAAAAAAAPFAAAAAAAAHFGAAAAAAAAv2UAAAAAAABnBQAAOAAAAMcFAAA4AAAAbVIZAAAAAAAVAPL//////78EAAAAAAAAHxQAAAAAAABXBAAABwAAAFUE7v8AAAAAPYEJAAAAAAC/lAAAAAAAAA8UAAAAAAAAeUUAAAAAAAB5RAgAAAAAAE9UAAAAAAAAXzQAAAAAAABVBAIAAAAAAAcBAAAQAAAALRj3/wAAAAA9ceT/AAAAAL+UAAAAAAAADxQAAAAAAABxRAAAAAAAAGcEAAA4AAAAxwQAADgAAABtQt7/AAAAAAcBAAABAAAAHRfd/wAAAAAFAPf/AAAAABgEAABd3AEAAAAAAAAAAAAPZAAAAAAAAHFEAAAAAAAAFQQEAAIAAAAVBAoAAwAAABUEDQAEAAAAtwIAAAEBAAAFAHwAAAAAAL8UAAAAAAAABwQAAAEAAAAtRwwAAAAAALcCAAAAAAAAeaPw/wAAAABzIwgAAAAAAAUAdwAAAAAAvxQAAAAAAAAHBAAAAQAAAC1HCwAAAAAABQD4/wAAAAC/FAAAAAAAAAcEAAABAAAALUcWAAAAAAAFAPT/AAAAAL+VAAAAAAAAD0UAAAAAAABxVQAAAAAAAFcFAADAAAAAFQVlAIAAAAAFAOn/AAAAAL+DAAAAAAAAv5gAAAAAAAAPSAAAAAAAAHGEAAAAAAAAFQYYAOAAAAAVBgEA7QAAAAUAGgAAAAAAv0UAAAAAAABnBQAAOAAAAMcFAAA4AAAAvzgAAAAAAABlBd3//////7cDAACgAAAALUNJAAAAAAAFANr/AAAAAL+DAAAAAAAAv5gAAAAAAAAPSAAAAAAAAHGEAAAAAAAAFQYZAPAAAAAVBgEA9AAAAAUAHAAAAAAAv0UAAAAAAABnBQAAOAAAAMcFAAA4AAAAZQXP//////+3BQAAkAAAAC1FHQAAAAAABQDM/wAAAABXBAAA4AAAAL84AAAAAAAAFQQ3AKAAAAAFAMj/AAAAAL9WAAAAAAAABwYAAB8AAABXBgAA/wAAACUGKwALAAAAv0UAAAAAAABnBQAAOAAAAMcFAAA4AAAAvzgAAAAAAABlBb///////7cDAADAAAAALUMrAAAAAAAFALz/AAAAAAcEAABwAAAAVwQAAP8AAAC3BQAAMAAAAC1FCAAAAAAABQC3/wAAAAAlBLb/vwAAAAcFAAAPAAAAVwUAAP8AAAAlBbP/AgAAAGcEAAA4AAAAxwQAADgAAABlBLD//////78UAAAAAAAABwQAAAIAAAAtRwEAAAAAAAUAsf8AAAAAv5UAAAAAAAAPRQAAAAAAAHFUAAAAAAAAVwQAAMAAAABVBCAAgAAAAL8UAAAAAAAABwQAAAMAAAAtRwEAAAAAAAUAqP8AAAAAv5UAAAAAAAAPRQAAAAAAAHFVAAAAAAAAVwUAAMAAAAC/OAAAAAAAABgDAACAgICAAAAAAICAgIAVBRYAgAAAALcCAAABAwAABQAXAAAAAAC/OAAAAAAAACUEl/+/AAAAVwUAAP4AAABVBZX/7gAAAGcEAAA4AAAAxwQAADgAAABlBJL//////78UAAAAAAAABwQAAAIAAAAtRwEAAAAAAAUAk/8AAAAAv5UAAAAAAAAPRQAAAAAAAHFVAAAAAAAAVwUAAMAAAAAYAwAAgICAgAAAAACAgICAFQUCAIAAAAC3AgAAAQIAAAUAAwAAAAAABwQAAAEAAAC/QQAAAAAAAAUAVv8AAAAAeaPw/wAAAABrIwgAAAAAAHsTAAAAAAAAYaH6/wAAAABjEwoAAAAAAGmh/v8AAAAAaxMOAAAAAACVAAAAAAAAAHtKOP8AAAAAezow/wAAAAC3AAAAAQAAALcGAAABAQAAvyUAAAAAAAAtJhgAAAAAALcFAAAAAAAAvxAAAAAAAAAHAAAAAAEAAL8mAAAAAAAABwYAAAH///+/VwAAAAAAAAcFAAAAAQAAPSUGAAAAAAC/BQAAAAAAAA91AAAAAAAAcVUAAAAAAABnBQAAOAAAAMcFAAA4AAAAZQUHAL////+/dQAAAAAAAAcFAAD/////FQcBAAH///9ddvP/AAAAALcAAAAAAAAABwUAAAABAAAFAAMAAAAAALcAAAAAAAAABwcAAAABAAC/dQAAAAAAABgGAABi3QEAAAAAAAAAAABVAAIAAAAAABgGAABd3QEAAAAAAAAAAAC3BwAAAAAAAFUAAQAAAAAAtwcAAAUAAAB7Wkj/AAAAAHsaQP8AAAAAe3pY/wAAAAB7alD/AAAAAC0jvAAAAAAALSS7AAAAAAAtQ+8AAAAAABUDCQAAAAAAHTIIAAAAAAA9IwgAAAAAAL8VAAAAAAAADzUAAAAAAABxVQAAAAAAAGcFAAA4AAAAxwUAADgAAAC3AAAAwP///21QAQAAAAAAv0MAAAAAAAB7OmD/AAAAABUDEgAAAAAAHSMRAAAAAAC/JAAAAAAAAAcEAAABAAAAtwUAAMD///8FAAQAAAAAAL8DAAAAAAAABwMAAP////8VAAoAAQAAAB0ECQAAAAAAvzAAAAAAAAA9IPr/AAAAAL8TAAAAAAAADwMAAAAAAABxNgAAAAAAAGcGAAA4AAAAxwYAADgAAAC/AwAAAAAAAG1l8/8AAAAAHSM3AAAAAAC/FQAAAAAAAA81AAAAAAAAcVQAAAAAAAC/QAAAAAAAAGcAAAA4AAAAxwAAADgAAABlADIA/////w8hAAAAAAAAv1YAAAAAAAAHBgAAAQAAALcAAAAAAAAAv0IAAAAAAABXAgAAHwAAAL8XAAAAAAAAHRYEAAAAAABxUAEAAAAAAAcFAAACAAAAVwAAAD8AAAC/VwAAAAAAAL8lAAAAAAAAZwUAAAYAAAC/BgAAAAAAAE9WAAAAAAAAJQQBAN8AAAAFACMAAAAAALcFAAAAAAAAvxgAAAAAAAAdFwQAAAAAAHF1AAAAAAAABwcAAAEAAABXBQAAPwAAAL94AAAAAAAAZwAAAAYAAABPBQAAAAAAAL8gAAAAAAAAZwAAAAwAAAC/VgAAAAAAAE8GAAAAAAAAtwAAAPAAAAAtQBQAAAAAALcEAAAAAAAAHRgCAAAAAABxhAAAAAAAAFcEAAA/AAAAZwUAAAYAAABnAgAAEgAAAFcCAAAAABwATyUAAAAAAABPRQAAAAAAAL9WAAAAAAAAVQUJAAAAEQAYAQAAOPYBAAAAAAAAAAAAhRAAAFcNAACFEAAA/////4UQAABSDQAABQD6/wAAAABjSmz/AAAAALcBAAABAAAABQALAAAAAAC3AQAAAQAAAGNqbP8AAAAAtwIAAIAAAAAtYgcAAAAAALcBAAACAAAAtwIAAAAIAAAtYgQAAAAAALcBAAADAAAAtwIAAAAAAQAtYgEAAAAAALcBAAAEAAAAezpw/wAAAAAPMQAAAAAAAHsaeP8AAAAAv6EAAAAAAAAHAQAAIP///7+iAAAAAAAABwIAAGD///8YAwAAkKABAAAAAAAAAAAAhRAAAMMGAAB5oSD/AAAAAHsaaP4AAAAAeaEo/wAAAAB7GmD+AAAAAL+hAAAAAAAABwEAABD///+/ogAAAAAAAAcCAABs////GAMAAEiQAQAAAAAAAAAAAIUQAAC+BgAAeaEQ/wAAAAB7Glj+AAAAAHmhGP8AAAAAexpQ/gAAAAC/oQAAAAAAAAcBAAAA////v6IAAAAAAAAHAgAAcP///xgDAABAFQEAAAAAAAAAAACFEAAAsAYAAHmmAP8AAAAAeacI/wAAAAC/oQAAAAAAAAcBAADw/v//v6IAAAAAAAAHAgAAQP///xgDAADAlwEAAAAAAAAAAACFEAAApwYAAHmo8P4AAAAAean4/gAAAAC/oQAAAAAAAAcBAADg/v//v6IAAAAAAAAHAgAAUP///xgDAADAlwEAAAAAAAAAAACFEAAAngYAAHua6P8AAAAAe4rg/wAAAAB7etj/AAAAAHtq0P8AAAAAeaFQ/gAAAAB7Gsj/AAAAAHmhWP4AAAAAexrA/wAAAAB5oWD+AAAAAHsauP8AAAAAeaFo/gAAAAB7GrD/AAAAAL+hAAAAAAAABwEAALD///97GqD/AAAAALcBAAAAAAAAexqQ/wAAAAC3AQAABQAAAHsaqP8AAAAAexqI/wAAAAAYAQAAAPcBAAAAAAAAAAAAexqA/wAAAAB5oej+AAAAAHsa+P8AAAAAeaHg/gAAAAB7GvD/AAAAAL+hAAAAAAAABwEAAID///8YAgAAUPcBAAAAAAAAAAAAhRAAADcNAACFEAAA/////y0jAQAAAAAAv0MAAAAAAAB7OnD/AAAAAL+hAAAAAAAABwEAAJD+//+/ogAAAAAAAAcCAABw////GAMAAJCgAQAAAAAAAAAAAIUQAABwBgAAeaaQ/gAAAAB5p5j+AAAAAL+hAAAAAAAABwEAAID+//+/ogAAAAAAAAcCAABA////GAMAAMCXAQAAAAAAAAAAAIUQAABqBgAAeaiA/gAAAAB5qYj+AAAAAL+hAAAAAAAABwEAAHD+//+/ogAAAAAAAAcCAABQ////GAMAAMCXAQAAAAAAAAAAAIUQAABhBgAAe5rI/wAAAAB7isD/AAAAAHt6uP8AAAAAe2qw/wAAAAC/oQAAAAAAAAcBAACw////exqg/wAAAAC3AQAAAAAAAHsakP8AAAAAtwEAAAMAAAB7Gqj/AAAAAHsaiP8AAAAAGAEAAGD2AQAAAAAAAAAAAHsagP8AAAAAeaF4/gAAAAB7Gtj/AAAAAHmhcP4AAAAAexrQ/wAAAAC/oQAAAAAAAAcBAACA////GAIAAJD2AQAAAAAAAAAAAIUQAAACDQAAhRAAAP////+/oQAAAAAAAAcBAADQ/v//v6IAAAAAAAAHAgAAMP///xgDAACQoAEAAAAAAAAAAACFEAAAPgYAAHmh0P4AAAAAexpo/gAAAAB5odj+AAAAAHsaYP4AAAAAv6EAAAAAAAAHAQAAwP7//7+iAAAAAAAABwIAADj///8YAwAAkKABAAAAAAAAAAAAhRAAADMGAAB5qMD+AAAAAHmpyP4AAAAAv6EAAAAAAAAHAQAAsP7//7+iAAAAAAAABwIAAED///8YAwAAwJcBAAAAAAAAAAAAhRAAAC0GAAB5prD+AAAAAHmnuP4AAAAAv6EAAAAAAAAHAQAAoP7//7+iAAAAAAAABwIAAFD///8YAwAAwJcBAAAAAAAAAAAAhRAAACQGAAB7etj/AAAAAHtq0P8AAAAAe5rI/wAAAAB7isD/AAAAAHmhYP4AAAAAexq4/wAAAAB5oWj+AAAAAHsasP8AAAAAv6EAAAAAAAAHAQAAsP///3saoP8AAAAAtwEAAAAAAAB7GpD/AAAAALcBAAAEAAAAexqo/wAAAAB7Goj/AAAAABgBAACo9gEAAAAAAAAAAAB7GoD/AAAAAHmhqP4AAAAAexro/wAAAAB5oaD+AAAAAHsa4P8AAAAAv6EAAAAAAAAHAQAAgP///xgCAADo9gEAAAAAAAAAAACFEAAAwQwAAIUQAAD/////twAAAAAAAACVAAAAAAAAAL8WAAAAAAAAv6EAAAAAAAAHAQAA8P///4UQAAD7AQAAeaHw/wAAAAB5ovj/AAAAAHsmCAAAAAAAexYAAAAAAACVAAAAAAAAAHsxCAAAAAAAeyEAAAAAAACVAAAAAAAAAHsqmP8AAAAAexqQ/wAAAAB7Sqj/AAAAAHs6oP8AAAAAv6EAAAAAAAAHAQAAgP///7+iAAAAAAAABwIAAJD///8YAwAAwJcBAAAAAAAAAAAAhRAAAO4FAAB5poD/AAAAAHmniP8AAAAAv6EAAAAAAAAHAQAAcP///7+iAAAAAAAABwIAAKD///8YAwAAIJcBAAAAAAAAAAAAhRAAAOUFAAB7euj/AAAAAHtq4P8AAAAAv6EAAAAAAAAHAQAA4P///3sa0P8AAAAAtwEAAAAAAAB7GsD/AAAAALcBAAACAAAAexrY/wAAAAB7Grj/AAAAABgBAABo9wEAAAAAAAAAAAB7GrD/AAAAAHmheP8AAAAAexr4/wAAAAB5oXD/AAAAAHsa8P8AAAAAv6EAAAAAAAAHAQAAsP///xgCAACI9wEAAAAAAAAAAACFEAAAiAwAAIUQAAD/////eyqo/wAAAAB7GqD/AAAAAL+hAAAAAAAABwEAAJD///+/ogAAAAAAAAcCAACg////GAMAAJCgAQAAAAAAAAAAAIUQAADCBQAAeaaQ/wAAAAB5p5j/AAAAAL+hAAAAAAAABwEAAID///+/ogAAAAAAAAcCAACo////GAMAAJCgAQAAAAAAAAAAAIUQAAC5BQAAe3ro/wAAAAB7auD/AAAAAL+hAAAAAAAABwEAAOD///97GtD/AAAAALcBAAAAAAAAexrA/wAAAAC3AQAAAgAAAHsa2P8AAAAAexq4/wAAAAAYAQAAoPcBAAAAAAAAAAAAexqw/wAAAAB5oYj/AAAAAHsa+P8AAAAAeaGA/wAAAAB7GvD/AAAAAL+hAAAAAAAABwEAALD///8YAgAAwPcBAAAAAAAAAAAAhRAAAF8MAACFEAAA/////3sqqP8AAAAAexqg/wAAAAC/oQAAAAAAAAcBAACQ////v6IAAAAAAAAHAgAAoP///xgDAACQoAEAAAAAAAAAAACFEAAAmQUAAHmmkP8AAAAAeaeY/wAAAAC/oQAAAAAAAAcBAACA////v6IAAAAAAAAHAgAAqP///xgDAACQoAEAAAAAAAAAAACFEAAAkAUAAHt66P8AAAAAe2rg/wAAAAC/oQAAAAAAAAcBAADg////exrQ/wAAAAC3AQAAAAAAAHsawP8AAAAAtwEAAAIAAAB7Gtj/AAAAAHsauP8AAAAAGAEAANj3AQAAAAAAAAAAAHsasP8AAAAAeaGI/wAAAAB7Gvj/AAAAAHmhgP8AAAAAexrw/wAAAAC/oQAAAAAAAAcBAACw////GAIAAPj3AQAAAAAAAAAAAIUQAAA2DAAAhRAAAP////+/JAAAAAAAAA80AAAAAAAAe0EIAAAAAAB7IQAAAAAAAJUAAAAAAAAAeyEAAAAAAABnAwAAAQAAAA8yAAAAAAAAeyEIAAAAAACVAAAAAAAAAHkjCAAAAAAAezEIAAAAAAB5IgAAAAAAAHshAAAAAAAAlQAAAAAAAAC/JQAAAAAAALcAAAAAAAAAXUUJAAAAAAC3AAAAAQAAAB0xBwAAAAAAvzIAAAAAAAC/UwAAAAAAAIUQAAA7DQAAvwEAAAAAAAC3AAAAAQAAABUBAQAAAAAAtwAAAAAAAABXAAAAAQAAAJUAAAAAAAAAZwIAAAYAAAB5EAAAAAAAAA8gAAAAAAAAlQAAAAAAAABnAgAABAAAAHkQAAAAAAAADyAAAAAAAACVAAAAAAAAAL8jAAAAAAAAdwMAAAEAAAAYBAAAVVVVVQAAAABVVVVVX0MAAAAAAAC/JAAAAAAAAB80AAAAAAAAGAMAADMzMzMAAAAAMzMzM79FAAAAAAAAXzUAAAAAAAB3BAAAAgAAAF80AAAAAAAAD0UAAAAAAAC/UwAAAAAAAHcDAAAEAAAADzUAAAAAAAAYAwAADw8PDwAAAAAPDw8PXzUAAAAAAAAYAwAAAQEBAQAAAAABAQEBLzUAAAAAAAB3BQAAOAAAAFUFCAABAAAAvyMAAAAAAAAHAwAA/////18TAAAAAAAAtwAAAAAAAAAVAwIAAAAAAB8yAAAAAAAAvyAAAAAAAACVAAAAAAAAABgBAAAQ+AEAAAAAAAAAAACFEAAAqQsAAIUQAAD/////vyMAAAAAAABnAwAAIAAAAHcDAAAgAAAAtwQAAAAIAAAtNBIAAAAAALcEAAAAAAEALTQBAAAAAAAFABUAAAAAABgEAADA////AAAAAAAAAAC/IwAAAAAAAF9DAAAAAAAAdwMAAAYAAAAHAwAA4P///yUDMgDfAwAAvxQAAAAAAAAPNAAAAAAAAHFEMAEAAAAAeRMIAQAAAAA9NDMAAAAAAGcEAAADAAAAeREAAQAAAAAFACAAAAAAABgDAADA////AAAAAAAAAAC/JAAAAAAAAF80AAAAAAAAdwQAAAMAAAAFABoAAAAAABgEAAAA8P//AAAAAAAAAAC/IwAAAAAAAF9DAAAAAAAAdwMAAAwAAAAHAwAA8P///7cEAAAAAQAALTQBAAAAAAAFACQAAAAAAL8UAAAAAAAADzQAAAAAAABxRBAFAAAAAGcEAAAGAAAAvyMAAAAAAAB3AwAABgAAAFcDAAA/AAAATzQAAAAAAAB5ExgBAAAAAD00IAAAAAAAeRMQAQAAAAAPQwAAAAAAAHE0AAAAAAAAeRMoAQAAAAA9NB4AAAAAAGcEAAADAAAAeREgAQAAAAAPQQAAAAAAAFcCAAA/AAAAtwAAAAEAAAC3AwAAAQAAAG8jAAAAAAAAeREAAAAAAABfMQAAAAAAAFUBAQAAAAAAtwAAAAAAAACVAAAAAAAAABgBAABg+AEAAAAAAAAAAAC/MgAAAAAAALcDAADgAwAAhRAAAHwLAACFEAAA/////xgBAAB4+AEAAAAAAAAAAAAFAAsAAAAAABgBAACQ+AEAAAAAAAAAAAC/MgAAAAAAALcDAAAAAQAAhRAAAHMLAACFEAAA/////xgBAACo+AEAAAAAAAAAAAAFAAIAAAAAABgBAADA+AEAAAAAAAAAAAC/QgAAAAAAAIUQAABrCwAAhRAAAP////+/VwAAAAAAAHtKoP8AAAAAvxYAAAAAAAC/oQAAAAAAAAcBAADg////hRAAAF3///95dRDwAAAAAHlyCPAAAAAAeaDo/wAAAAB5qeD/AAAAAB0JMQAAAAAAFQkwAAAAAAB5cQDwAAAAAHsakP8AAAAAv2cAAAAAAABXBwAAAP8AAHcHAAAIAAAAtwEAAAAAAAB7Koj/AAAAAHsKmP8AAAAAe3qA/wAAAAAFAAMAAAAAAC10JQAAAAAAv4EAAAAAAAAdCSMAAAAAAHGTAQAAAAAAvxgAAAAAAAAPOAAAAAAAAHGUAAAAAAAABwkAAAIAAAAddAEAAAAAAAUA9v8AAAAALYFcAAAAAAC/VwAAAAAAAHmikP8AAAAALShVAAAAAAB5oqD/AAAAAA8SAAAAAAAAv6EAAAAAAAAHAQAA0P///4UQAAA1////eaHY/wAAAAB5otD/AAAAAL91AAAAAAAAeaCY/wAAAAAdIQkAAAAAALcHAAAAAAAAv2MAAAAAAABXAwAA/wAAAHEkAAAAAAAABwIAAAEAAABdNPn/AAAAAFcHAAABAAAAv3AAAAAAAACVAAAAAAAAAL+BAAAAAAAAeaKI/wAAAAB5p4D/AAAAAB0JAQAAAAAABQDd/wAAAAC/IwAAAAAAAA9TAAAAAAAAv6EAAAAAAAAHAQAAwP///4UQAACU/v//eaHI/wAAAAB7Gvj/AAAAAHmhwP8AAAAAexrw/wAAAAC/oQAAAAAAAAcBAAC4////v6IAAAAAAAAHAgAA8P///4UQAACNAAAAtwcAAAEAAABxobj/AAAAAFcBAAABAAAAFQEUAAAAAABxqbn/AAAAALcHAAABAAAAVwYAAP//AAC3CAAAAAAAAAUAEAAAAAAAVwkAAP8AAAAflgAAAAAAAGcGAAAgAAAAxwYAACAAAABtaAoAAAAAAL+hAAAAAAAABwEAAKj///+/ogAAAAAAAAcCAADw////hRAAAHoAAACnBwAAAQAAAHGpqf8AAAAAcaGo/wAAAABXAQAAAQAAAFUBAQAAAAAABQDR/wAAAAC/kQAAAAAAAGcBAAA4AAAAxwEAADgAAABtGAEAAAAAAAUA6/8AAAAAv6EAAAAAAAAHAQAAsP///7+iAAAAAAAABwIAAPD///+FEAAAagAAAHGhsP8AAAAAVwEAAAEAAABVAQQAAAAAABgBAAA4+AEAAAAAAAAAAACFEAAA3QoAAIUQAAD/////caGx/wAAAABXCQAAfwAAAGcJAAAIAAAATxkAAAAAAAAFANv/AAAAAL+BAAAAAAAAeaKQ/wAAAACFEAAAkP7//4UQAAD/////v4IAAAAAAACFEAAAtv7//4UQAAD/////vxIAAAAAAABnAgAAIAAAAHcCAAAgAAAAtwMAAAAAAQAtIxEAAAAAALcDAAAAAAIALSMBAAAAAAAFAB0AAAAAABgCAABx4wEAAAAAAAAAAAB7KgjwAAAAALcCAACYAQAAeyoQ8AAAAAC3AgAApgAAAHsqAPAAAAAAv6UAAAAAAAAYAgAAheIBAAAAAAAAAAAAtwMAACMAAAAYBAAAy+IBAAAAAAAAAAAABQANAAAAAAAYAgAAS+EBAAAAAAAAAAAAeyoI8AAAAAC3AgAAOgEAAHsqEPAAAAAAtwIAACUBAAB7KgDwAAAAAL+lAAAAAAAAGAIAANTfAQAAAAAAAAAAALcDAAApAAAAGAQAACbgAQAAAAAAAAAAAIUQAABc////lQAAAAAAAAC3AAAAAAAAAL8SAAAAAAAABwIAAOIF/f9nAgAAIAAAAHcCAAAgAAAAtwMAAOIGCwAtI/j/AAAAAL8SAAAAAAAABwIAAB8U/f9nAgAAIAAAAHcCAAAgAAAAtwMAAB8MAAAtI/L/AAAAAL8SAAAAAAAABwIAAF4x/f9nAgAAIAAAAHcCAAAgAAAAtwMAAA4AAAAtI+z/AAAAAL8SAAAAAAAAVwIAAP7/HwAVAun/HrgCAL8SAAAAAAAABwIAAClZ/f9nAgAAIAAAAHcCAAAgAAAAtwMAACkAAAAtI+P/AAAAAL8SAAAAAAAABwIAAMtI/f9nAgAAIAAAAHcCAAAgAAAAtwMAAAsAAAAtI93/AAAAAAcBAAAQ/vH/ZwEAACAAAAB3AQAAIAAAALcAAAABAAAAJQEBAA/+AgC3AAAAAAAAAJUAAAAAAAAAvxIAAAAAAAAYAQAA2PgBAAAAAAAAAAAAhRAAANb+//+VAAAAAAAAAJUAAAAAAAAAezEIAAAAAAB7IQAAAAAAAJUAAAAAAAAAvxYAAAAAAAC3AwAAAAAAAHkhAAAAAAAAeSQIAAAAAAAdQQQAAAAAAL8TAAAAAAAABwMAAAEAAAB7MgAAAAAAAL8TAAAAAAAAv6EAAAAAAAAHAQAA+P///78yAAAAAAAAhRAAAMcKAABxofj/AAAAAHGi+f8AAAAAcyYBAAAAAABXAQAAAQAAAHMWAAAAAAAAlQAAAAAAAAC/VgAAAAAAAL8VAAAAAAAAFQbLAAAAAAB7KqD/AAAAAHtaqP8AAAAAe0rI/wAAAAB7Opj/AAAAALcHAAAAAAAAv2gAAAAAAAC3CQAAAAAAAHtqwP8AAAAAFQZtAAEAAAC3BwAAAAAAALcEAAABAAAAtwgAAAEAAAC3AgAAAQAAALcBAAAAAAAAeaDI/wAAAAAFABAAAAAAAA8TAAAAAAAAtwEAAAAAAAAHAwAAAQAAAL84AAAAAAAAH3gAAAAAAAC/MgAAAAAAAL8kAAAAAAAADxQAAAAAAAAtRgcAAAAAALcJAAAAAAAAtwAAAAEAAAC3AQAAAQAAAHsawP8AAAAAtwIAAAEAAAC3BAAAAAAAAAUALAAAAAAAvyMAAAAAAAC/EgAAAAAAAA9yAAAAAAAAPWJMAQAAAAC/BQAAAAAAAA9FAAAAAAAAcVQAAAAAAAC/BQAAAAAAAA8lAAAAAAAAcVIAAAAAAAAtQuX/AAAAAB0kAQAAAAAABQAKAAAAAAAHAQAAAQAAALcEAAAAAAAAHYEBAAAAAAC/FAAAAAAAAB2BAQAAAAAAtwEAAAAAAAC/EgAAAAAAAA8yAAAAAAAAv0EAAAAAAAAFAN//AAAAALcIAAABAAAAtwEAAAAAAAC/MgAAAAAAAAcCAAABAAAAvzcAAAAAAAAFANn/AAAAAA9FAAAAAAAAtwQAAAAAAAAHBQAAAQAAAL9SAAAAAAAAv2kAAAAAAAAfkgAAAAAAAHsqwP8AAAAAv1IAAAAAAAC/hwAAAAAAAL8YAAAAAAAAvzYAAAAAAAC/IAAAAAAAAA9AAAAAAAAALQYBAAAAAAAFACoAAAAAAL+BAAAAAAAAv3gAAAAAAAC/JQAAAAAAAL9CAAAAAAAAv2cAAAAAAAC/lgAAAAAAAA+SAAAAAAAAv3MAAAAAAAA9ch4BAAAAAHmpyP8AAAAAv5cAAAAAAAAPBwAAAAAAAHFwAAAAAAAAv5cAAAAAAAAPJwAAAAAAAHFyAAAAAAAALSDg/wAAAAC/aQAAAAAAAB0gAQAAAAAABQAPAAAAAAAHBAAAAQAAALcAAAAAAAAAeaLA/wAAAAAdJAEAAAAAAL9AAAAAAAAAv4cAAAAAAAC/NgAAAAAAAHmiwP8AAAAAHSQBAAAAAAC3BAAAAAAAAL9CAAAAAAAAD1IAAAAAAAC/BAAAAAAAAL8YAAAAAAAABQDZ/wAAAAC3AgAAAQAAAHsqwP8AAAAAtwQAAAAAAAC/UgAAAAAAAAcCAAABAAAAv1kAAAAAAAAFAM//AAAAAC2XAQAAAAAAeajA/wAAAAAtlwEAAAAAAL+XAAAAAAAAPXYCAAAAAAC/cQAAAAAAAAUADQEAAAAAv4IAAAAAAAAPcgAAAAAAALcDAAABAAAAeaHI/wAAAAAtKAEAAAAAALcDAAAAAAAAVwMAAAEAAABVAwEBAAAAAC1iAwEAAAAAvxMAAAAAAAAPgwAAAAAAAL9yAAAAAAAAv3QAAAAAAACFEAAA9f3//3t6kP8AAAAAFQBbAAAAAAB5oaD/AAAAAHmhqP8AAAAAtwIAAAAAAAC3AwAAAQAAALcBAAABAAAAtwQAAAAAAAB7irj/AAAAAHtqsP8AAAAABQALAAAAAAAPBQAAAAAAALcCAAAAAAAABwUAAAEAAAC/UwAAAAAAAB9DAAAAAAAAv1EAAAAAAAC/RgAAAAAAAHmouP8AAAAAv2QAAAAAAAB5prD/AAAAAB2DXwAAAAAAv0cAAAAAAAC/EAAAAAAAAL8lAAAAAAAAD1EAAAAAAAA9YVoAAAAAAL9iAAAAAAAAH1IAAAAAAAC/AQAAAAAAAKcBAAD/////DxIAAAAAAAA9YssAAAAAAL85AAAAAAAAv1MAAAAAAACnAwAA/////w9jAAAAAAAAv3QAAAAAAAAfcwAAAAAAAD1jxwAAAAAAeajI/wAAAAC/gQAAAAAAAA8hAAAAAAAAcRcAAAAAAAC/gQAAAAAAAA8xAAAAAAAAcRgAAAAAAAAteNv/AAAAAL8BAAAAAAAABwEAAAEAAAC3AgAAAAAAALcDAAABAAAAvwYAAAAAAAAdhwEAAAAAAAUA2/8AAAAABwUAAAEAAAC3AgAAAAAAAB2VAQAAAAAAv1IAAAAAAAAdlQEAAAAAALcFAAAAAAAADwUAAAAAAAC/kwAAAAAAAAUA0P8AAAAAYaHQ/wAAAABjGvj/AAAAAGmh1P8AAAAAaxr8/wAAAAC3AQAAAQEAAGsVOAAAAAAAtwEAAAAAAAB7FSgAAAAAAHsVIAAAAAAAexUYAAAAAAB7RRAAAAAAAHs1MAAAAAAAezUIAAAAAAB7JQAAAAAAAGGh+P8AAAAAYxU6AAAAAABpofz/AAAAAGsVPgAAAAAAeaHY/wAAAAB7FUgAAAAAAHmh4P8AAAAAexVQAAAAAAB5oej/AAAAAHsVWAAAAAAAeaHw/wAAAAB7FWAAAAAAAHmh0P8AAAAAexVAAAAAAAAFAIcAAAAAAL9iAAAAAAAAH3IAAAAAAAC/cQAAAAAAAC0nAQAAAAAAvyEAAAAAAAC3BQAAAAAAAL9jAAAAAAAAeaTI/wAAAABxQAAAAAAAAFcAAAA/AAAAtwIAAAEAAABvAgAAAAAAAE9SAAAAAAAABwQAAAEAAAAHAwAA/////78lAAAAAAAAFQMBAAAAAAAFAPb/AAAAALcFAAD/////BwEAAAEAAAC3BAAA/////79zAAAAAAAAeanI/wAAAAAFAFwAAAAAAHtKiP8AAAAAtwUAAAAAAAC3AwAAAQAAALcHAAABAAAAtwEAAAAAAAAFAAsAAAAAAA8FAAAAAAAAtwEAAAAAAAB7GsD/AAAAAAcFAAABAAAAv1MAAAAAAAAfQwAAAAAAAL9XAAAAAAAAv0EAAAAAAAB5qLj/AAAAAHmlwP8AAAAAHYMrAAAAAAC/FAAAAAAAAL9wAAAAAAAAvzkAAAAAAAC/AgAAAAAAAA9SAAAAAAAAPWIlAAAAAAC/YgAAAAAAAB9SAAAAAAAAvwEAAAAAAACnAQAA/////w8SAAAAAAAAPWJaAAAAAAC/UwAAAAAAAKcDAAD/////D2MAAAAAAAAfQwAAAAAAAD1jXgAAAAAAeafI/wAAAAC/cQAAAAAAAA8hAAAAAAAAcRgAAAAAAAC/cQAAAAAAAA8xAAAAAAAAcRIAAAAAAAAtKNz/AAAAAL8HAAAAAAAABwcAAAEAAAC3AQAAAAAAAHsawP8AAAAAtwMAAAEAAAC/AQAAAAAAAB0oAQAAAAAABQDc/wAAAAAHBQAAAQAAALcBAAAAAAAAHZUBAAAAAAC/UQAAAAAAAHsawP8AAAAAHZUBAAAAAAC3BQAAAAAAAA8FAAAAAAAAv5MAAAAAAAAFAND/AAAAAHmiiP8AAAAALRIBAAAAAAC/EgAAAAAAAHmhqP8AAAAAeaGg/wAAAAA9hgIAAAAAAL+BAAAAAAAABQBGAAAAAAC/YwAAAAAAAB8jAAAAAAAAtwQAAAAAAAC/ZQAAAAAAALcCAAAAAAAAtwEAAAAAAAB5qcj/AAAAABUIEAAAAAAAtwQAAAAAAAC3AAAAAAAAALcHAAAAAAAAv5EAAAAAAAAPAQAAAAAAAHERAAAAAAAAVwEAAD8AAAC3AgAAAQAAAG8SAAAAAAAAT3IAAAAAAAAHAAAAAQAAAL8nAAAAAAAAv2UAAAAAAAC/gQAAAAAAAB0IAQAAAAAABQDz/wAAAAB5oKj/AAAAAHtQYAAAAAAAe0BYAAAAAAC3BAAAAAAAAHtASAAAAAAAeyBAAAAAAAB7EDgAAAAAAHswMAAAAAAAeaGQ/wAAAAB7ECgAAAAAALcBAAABAAAAexAgAAAAAAB7YBgAAAAAAHuQEAAAAAAAeaGY/wAAAAB7EFAAAAAAAHsQCAAAAAAAeaGg/wAAAAB7EAAAAAAAAJUAAAAAAAAAGAEAAOj+AQAAAAAAAAAAAAUAEAAAAAAAGAEAAOj+AQAAAAAAAAAAAIUQAAAHCQAAhRAAAP////8YAQAAAP8BAAAAAAAAAAAABQAJAAAAAAAYAQAAGP8BAAAAAAAAAAAAvzIAAAAAAAB5o7D/AAAAAIUQAAD+CAAAhRAAAP////8YAQAAGP8BAAAAAAAAAAAAvzIAAAAAAAC/YwAAAAAAAIUQAAD4CAAAhRAAAP////+/gQAAAAAAAIUQAADA/P//hRAAAP////+/IQAAAAAAAL9iAAAAAAAAhRAAAJP8//+FEAAA/////3kkAAAAAAAAeRIIAAAAAAB5EQAAAAAAALcDAAAAAAAAhRAAAPf6//+FEAAA/////3kSEAAAAAAAeSQAAAAAAAB5EggAAAAAAHkjAAAAAAAAeREAAAAAAAB5EggAAAAAAHkRAAAAAAAAhRAAAO76//+FEAAA/////785AAAAAAAAvycAAAAAAAC/GAAAAAAAALcAAAAAAAAAFQmaAAAAAAC/oQAAAAAAAAcBAAD8////exqI/wAAAAB7ioD/AAAAAAUAHwAAAAAAe3qw/wAAAAB7mrj/AAAAAHtqwP8AAAAAe5rI/wAAAABXCAAAAQAAAFUIFAAAAAAAPZYGAAAAAAC/cQAAAAAAAA9hAAAAAAAAcREAAAAAAABnAQAAOAAAAMcBAAA4AAAAZQENAL////+/oQAAAAAAAAcBAADI////exrg/wAAAAC/oQAAAAAAAAcBAADA////exrY/wAAAAC/oQAAAAAAAAcBAACw////exrQ/wAAAAC/oQAAAAAAAAcBAADQ////hRAAANT///+FEAAA/////w9nAAAAAAAAH2kAAAAAAAC3AAAAAAAAAHmogP8AAAAAFQl2AAAAAAB5gRAAAAAAAHERAAAAAAAAFQELAAAAAAB5gQAAAAAAAHmCCAAAAAAAeSQYAAAAAAAYAgAAZMMBAAAAAAAAAAAAtwMAAAQAAACNAAAABAAAABUAAwAAAAAAhRAAAA0CAAC3AAAAAQAAAAUAaAAAAAAAtwEAAAAAAAB7GuD/AAAAABgBAAAKAAAAAAAAAAoAAAB7Gvj/AAAAALcBAAABAAAAexrw/wAAAAB7muj/AAAAAHua2P8AAAAAe3rQ/wAAAAC/oQAAAAAAAAcBAACg////twIAAAoAAAC/cwAAAAAAAL+UAAAAAAAAhRAAAJT4//95oaD/AAAAAFUBKQABAAAAeaao/wAAAAB5oeD/AAAAAA8WAAAAAAAABwYAAAEAAAB7auD/AAAAAHmi8P8AAAAALWIQAAAAAAB5odj/AAAAAC0WDgAAAAAAtwEAAAUAAAAtIQQAAAAAAL8hAAAAAAAAtwIAAAQAAACFEAAALPz//4UQAAD/////HyYAAAAAAAB5odD/AAAAAA9hAAAAAAAAeaOI/wAAAAC/JAAAAAAAAIUQAACG/P//VQA7AAAAAAB5puD/AAAAAHmk6P8AAAAALUYSAAAAAAB5odj/AAAAAC0UEAAAAAAAeaPQ/wAAAAAPYwAAAAAAAB9kAAAAAAAAv6EAAAAAAAAHAQAA0P///3mi8P8AAAAADxIAAAAAAABxIisAAAAAAL+hAAAAAAAABwEAAJD///+FEAAAbPj//3mmmP8AAAAAeaGQ/wAAAAAVAdj/AQAAAHmh6P8AAAAAexrg/wAAAAB5gRAAAAAAALcCAAAAAAAAcyEAAAAAAAC/lgAAAAAAAHmCCAAAAAAAeYEAAAAAAAB7etD/AAAAAHua2P8AAAAAtwgAAAEAAAC3AwAAAQAAAB1pAQAAAAAAtwMAAAAAAAAVBgEAAAAAALcIAAAAAAAAe2qw/wAAAABPOAAAAAAAAL+DAAAAAAAAVwMAAAEAAABVAw0AAAAAAD2WBgAAAAAAv3MAAAAAAAAPYwAAAAAAAHEzAAAAAAAAZwMAADgAAADHAwAAOAAAAGUDBgC/////v6EAAAAAAAAHAQAA0P///7+iAAAAAAAABwIAALD///+FEAAAXv///4UQAAD/////eSQYAAAAAAC/cgAAAAAAAL9jAAAAAAAAjQAAAAQAAAAVAHH/AAAAAAUAmv8AAAAAeYEQAAAAAAC3AgAAAQAAAHMhAAAAAAAABwYAAAEAAAAFANn/AAAAAJUAAAAAAAAAvyYAAAAAAAC/FwAAAAAAAL9hAAAAAAAAvzIAAAAAAAC/QwAAAAAAAIUQAABWBQAAtwEAAAAAAABzFwkAAAAAAHMHCAAAAAAAe2cAAAAAAACVAAAAAAAAAL8WAAAAAAAAcWEIAAAAAABxYgkAAAAAAL8QAAAAAAAAFQIPAAAAAAC3AAAAAQAAAFUBDAAAAAAAeWEAAAAAAACFEAAAZAUAAHlhAAAAAAAAVQAEAAAAAAAYAgAAc+sBAAAAAAAAAAAAtwMAAAIAAAAFAAMAAAAAABgCAABy6wEAAAAAAAAAAAC3AwAAAQAAAIUQAAA+BQAAcwYIAAAAAABXAAAA/wAAALcBAAABAAAAVQABAAAAAAC3AQAAAAAAAL8QAAAAAAAAlQAAAAAAAAC/RwAAAAAAAL8oAAAAAAAAvxYAAAAAAAC/gQAAAAAAAL8yAAAAAAAAv3MAAAAAAACFEAAAMAUAAHMGEAAAAAAAe4YAAAAAAAC3AQAAAAAAALcCAAABAAAAFQcBAAAAAAC3AgAAAAAAAHMmEQAAAAAAexYIAAAAAACVAAAAAAAAAL84AAAAAAAAvycAAAAAAAC/FgAAAAAAALcJAAABAAAAcWEQAAAAAABVATwAAAAAAHlhAAAAAAAAhRAAADsFAAB5YQgAAAAAAFUAFAAAAAAAGAIAAHfrAQAAAAAAAAAAABUBAgAAAAAAGAIAAHDrAQAAAAAAAAAAALcDAAABAAAAFQEBAAAAAAC3AwAAAgAAAHlhAAAAAAAAhRAAABMFAABVAAEAAAAAAAUAAwAAAAAAhRAAAFYBAAC3CQAAAQAAAAUAKQAAAAAAeYMYAAAAAAB5YgAAAAAAAL9xAAAAAAAAjQAAAAMAAAAFACMAAAAAAFUBCAAAAAAAeWEAAAAAAAAYAgAAdesBAAAAAAAAAAAAtwMAAAIAAACFEAAAAwUAABUAAgAAAAAAhRAAAEcBAAAFABsAAAAAALcBAAAAAAAAexqA/wAAAAC3CQAAAQAAAHOan/8AAAAAeWIAAAAAAAB7enj/AAAAAL+nAAAAAAAABwcAAKD///+/owAAAAAAAAcDAACf////v6QAAAAAAAAHBAAAgP///79xAAAAAAAAhRAAALwCAAB5gxgAAAAAAHmheP8AAAAAv3IAAAAAAACNAAAAAwAAABUAAQAAAAAABQDq/wAAAAC/oQAAAAAAAAcBAACg////GAIAAG7rAQAAAAAAAAAAALcDAAACAAAAhRAAAOYEAAC/CQAAAAAAAHOWEAAAAAAAeWEIAAAAAAAHAQAAAQAAAHsWCAAAAAAAv2AAAAAAAACVAAAAAAAAAL8WAAAAAAAAcWIQAAAAAAB5YQgAAAAAAL8nAAAAAAAAFQEZAAAAAAC3BwAAAQAAAFUCFgAAAAAAFQEBAAEAAAAFAA4AAAAAAHFhEQAAAAAAFQEMAAAAAAB5YQAAAAAAAIUQAADuBAAAVQAJAAAAAAB5YQAAAAAAALcHAAABAAAAGAIAAHjrAQAAAAAAAAAAALcDAAABAAAAhRAAAMsEAAAVAAIAAAAAAIUQAAAPAQAABQAGAAAAAAB5YQAAAAAAABgCAAB56wEAAAAAAAAAAAC3AwAAAQAAAIUQAADDBAAAvwcAAAAAAABzdhAAAAAAAFcHAAD/AAAAtwAAAAEAAABVBwEAAAAAALcAAAAAAAAAlQAAAAAAAAC3AwAAAAAAAGM6/P8AAAAAvyMAAAAAAABnAwAAIAAAAHcDAAAgAAAAtwQAAIAAAAAtNA0AAAAAALcEAAAACAAALTQBAAAAAAAFAA0AAAAAAL8jAAAAAAAAVwMAAD8AAABHAwAAgAAAAHM6/f8AAAAAdwIAAAYAAABXAgAAHwAAAEcCAADAAAAAcyr8/wAAAAC3AwAAAgAAAAUAKAAAAAAAcyr8/wAAAAC3AwAAAQAAAAUAJQAAAAAAvyMAAAAAAABnAwAAIAAAAHcDAAAgAAAAtwQAAAAAAQAtNAEAAAAAAAUADgAAAAAAVwIAAD8AAABHAgAAgAAAAHMq/v8AAAAAvzIAAAAAAAB3AgAABgAAAFcCAAA/AAAARwIAAIAAAABzKv3/AAAAAHcDAAAMAAAAVwMAAA8AAABHAwAA4AAAAHM6/P8AAAAAtwMAAAMAAAAFABEAAAAAAFcCAAA/AAAARwIAAIAAAABzKv//AAAAAL8yAAAAAAAAdwIAABIAAABHAgAA8AAAAHMq/P8AAAAAvzIAAAAAAAB3AgAABgAAAFcCAAA/AAAARwIAAIAAAABzKv7/AAAAAHcDAAAMAAAAVwMAAD8AAABHAwAAgAAAAHM6/f8AAAAAtwMAAAQAAAC/ogAAAAAAAAcCAAD8////hRAAAIH+//+VAAAAAAAAAHsayP8AAAAAeSEoAAAAAAB7Gvj/AAAAAHkhIAAAAAAAexrw/wAAAAB5IRgAAAAAAHsa6P8AAAAAeSEQAAAAAAB7GuD/AAAAAHkhCAAAAAAAexrY/wAAAAB5IQAAAAAAAHsa0P8AAAAAv6EAAAAAAAAHAQAAyP///7+jAAAAAAAABwMAAND///8YAgAAMP8BAAAAAAAAAAAAhRAAANcAAACVAAAAAAAAAHkRAAAAAAAAhRAAAGn+//+VAAAAAAAAAHkRAAAAAAAAhRAAAKb///+VAAAAAAAAAHkRAAAAAAAAeSMoAAAAAAB7OsD/AAAAAHkkIAAAAAAAe0q4/wAAAAB5JRgAAAAAAHtasP8AAAAAeSAQAAAAAAB7Cqj/AAAAAHkmCAAAAAAAe2qg/wAAAAB5IgAAAAAAAHsqmP8AAAAAexrI/wAAAAB7Ovj/AAAAAHtK8P8AAAAAe1ro/wAAAAB7CuD/AAAAAHtq2P8AAAAAeyrQ/wAAAAC/oQAAAAAAAAcBAADI////v6MAAAAAAAAHAwAA0P///xgCAAAw/wEAAAAAAAAAAACFEAAAtQAAAJUAAAAAAAAAVQMCAAAAAAC3AgAAAAAAAAUANAAAAAAAcSQAAAAAAABVBAQAKwAAAAcCAAABAAAABwMAAP////9VAwEAAAAAAAUA+P8AAAAAexrY/wAAAAC/oQAAAAAAAAcBAADw////hRAAABH7//+3AgAAAAAAAHmn+P8AAAAAeajw/wAAAAC3CQAACgAAAAUAAwAAAAAABwgAAAEAAABVAQEAAQAAAAUAFgAAAAAAHYclAAAAAABxhgAAAAAAAAcGAADQ////v2EAAAAAAABnAQAAIAAAAHcBAAAgAAAALRkEAAAAAAC3AgAAAQAAAHmh2P8AAAAAcyEBAAAAAAAFABkAAAAAAL+hAAAAAAAABwEAAOD///+3AwAAAAAAALcEAAAKAAAAtwUAAAAAAACFEAAAFgwAALcBAAABAAAAeaLo/wAAAABVAgEAAAAAALcBAAAAAAAAVQEDAAEAAAC3AgAAAgAAAHmh2P8AAAAABQAJAAAAAAB5o+D/AAAAAGcGAAAgAAAAdwYAACAAAAC/MgAAAAAAAA9iAAAAAAAAtwEAAAEAAAAtI93/AAAAALcBAAAAAAAABQDb/wAAAABzIQEAAAAAALcCAAABAAAAcyEAAAAAAACVAAAAAAAAAHmh2P8AAAAAeyEIAAAAAAC3AgAAAAAAAAUA+v8AAAAAtwAAAAAAEQBhEgAAAAAAAGUCBQABAAAAFQIdAAAAAAC3AgAAAAAAAGMhAAAAAAAAYRAEAAAAAAAFABkAAAAAABUCFQACAAAAcRIUAAAAAABlAhcAAgAAABUCFQAAAAAAFQIaAAEAAABhExAAAAAAAHkSCAAAAAAAvyQAAAAAAABnBAAAAgAAAFcEAAAcAAAAf0MAAAAAAABXAwAADwAAAL8wAAAAAAAARwAAADAAAAC3BAAACgAAAC00AgAAAAAABwMAAFcAAAC/MAAAAAAAABUCGAAAAAAABwIAAP////97IQgAAAAAAAUAAwAAAAAAtwIAAAEAAABjIQAAAAAAALcAAABcAAAAlQAAAAAAAAAVAggAAwAAABUCCwAEAAAAtwIAAAQAAABzIRQAAAAAAAUA+f8AAAAAtwIAAAAAAABzIRQAAAAAALcAAAB9AAAABQD2/wAAAAC3AgAAAgAAAHMhFAAAAAAAtwAAAHsAAAAFAPL/AAAAALcCAAADAAAAcyEUAAAAAAC3AAAAdQAAAAUA7v8AAAAAtwIAAAEAAABzIRQAAAAAAAUA6/8AAAAAhRAAAMn///9nAAAAIAAAAHcAAAAgAAAAlQAAAAAAAABhIwAAAAAAAFUDAwADAAAAcSQUAAAAAAB5IwgAAAAAAA9DAAAAAAAAtwIAAAEAAAB7IQgAAAAAAHsxEAAAAAAAezEAAAAAAACVAAAAAAAAAHkjEAAAAAAAezEQAAAAAAB5IwgAAAAAAHsxCAAAAAAAeSIAAAAAAAB7IQAAAAAAAJUAAAAAAAAAlQAAAAAAAACVAAAAAAAAAHkSEAAAAAAAeSQAAAAAAAB5EggAAAAAAHkjAAAAAAAAeREAAAAAAAB5EggAAAAAAHkRAAAAAAAAhRAAAKL4//+FEAAA/////4UQAAByBwAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB7MQgAAAAAAHshAAAAAAAAlQAAAAAAAAB5JCgAAAAAAHkiIAAAAAAAeRMoAAAAAAB7Ovj/AAAAAHkTIAAAAAAAezrw/wAAAAB5ExgAAAAAAHs66P8AAAAAeRMQAAAAAAB7OuD/AAAAAHkTCAAAAAAAezrY/wAAAAB5EQAAAAAAAHsa0P8AAAAAv6MAAAAAAAAHAwAA0P///78hAAAAAAAAv0IAAAAAAACFEAAAAQAAAJUAAAAAAAAAeTcgAAAAAAB5NCgAAAAAALcFAAADAAAAc1qY/wAAAAAYBQAAAAAAAAAAAAAgAAAAe1qQ/wAAAAB7Kmj/AAAAAHsaYP8AAAAAtwYAAAAAAAB7alD/AAAAAHtqQP8AAAAAe0qI/wAAAAB7eoD/AAAAAHt6cP8AAAAAZwQAAAQAAAC/eQAAAAAAAA9JAAAAAAAAe5p4/wAAAAB5OBAAAAAAAFUITAAAAAAAeTIAAAAAAAB5MQgAAAAAAHsaGP8AAAAAZwEAAAQAAAC/IwAAAAAAAA8TAAAAAAAAv6EAAAAAAAAHAQAAIP///3sqEP8AAAAAhRAAAMv5//95pSj/AAAAAHmkIP8AAAAAv6gAAAAAAAAHCAAA0P///7+BAAAAAAAAv3IAAAAAAAC/kwAAAAAAAIUQAAAt9v//v6EAAAAAAAAHAQAAoP///7+CAAAAAAAAhRAAABn2//95obj/AAAAAHsa6P8AAAAAeaGw/wAAAAB7GuD/AAAAAHmhqP8AAAAAexrY/wAAAAB5oaD/AAAAAHsa0P8AAAAAtwYAAAAAAAB5ocj/AAAAAHsa+P8AAAAAeajA/wAAAAB7ivD/AAAAAD0Y8gAAAAAAtwYAAAAAAAC/pwAAAAAAAAcHAADg////BQAPAAAAAAB5kQAAAAAAAHmTCAAAAAAAv6IAAAAAAAAHAgAAQP///40AAAADAAAAv6EAAAAAAAAHAQAAoP///7+hAAAAAAAABwEAAND///9VAOIAAAAAAAcGAAABAAAAeajw/wAAAAB5ofj/AAAAAC2BAQAAAAAABQDfAAAAAAC/gQAAAAAAAAcBAAABAAAAexrw/wAAAAC/oQAAAAAAAAcBAADQ////v4IAAAAAAACFEAAAOPr//78JAAAAAAAAv3EAAAAAAAC/ggAAAAAAAIUQAAA0+v//eQIAAAAAAAB5AwgAAAAAAHmhaP8AAAAAeRQYAAAAAAB5oWD/AAAAAI0AAAAEAAAAv6EAAAAAAAAHAQAAoP///1UAyQAAAAAABQDc/wAAAAB5NxgAAAAAAHkyAAAAAAAAeTEIAAAAAAB7Ghj/AAAAAGcBAAAEAAAAvyMAAAAAAAAPEwAAAAAAAL+hAAAAAAAABwEAADD///97KhD/AAAAAIUQAAB++f//ZwcAAAYAAAC/gwAAAAAAAA9zAAAAAAAAeaU4/wAAAAB5pDD/AAAAAL+nAAAAAAAABwcAAND///+/cQAAAAAAAL+CAAAAAAAAhRAAAOz1//+/oQAAAAAAAAcBAACg////v3IAAAAAAACFEAAAyvX//3mhuP8AAAAAexro/wAAAAB5obD/AAAAAHsa4P8AAAAAeaGo/wAAAAB7Gtj/AAAAAHmhoP8AAAAAexrQ/wAAAAB5ocj/AAAAAHsa+P8AAAAAeanA/wAAAAB7mvD/AAAAAD0ZjgAAAAAAtwYAAAAAAAC/pwAAAAAAAAcHAADg////v5EAAAAAAAAHAQAAAQAAAHsa8P8AAAAAv6EAAAAAAAAHAQAA0P///7+SAAAAAAAAhRAAAPb5//+/CAAAAAAAAL9xAAAAAAAAv5IAAAAAAACFEAAA9vn//3kCAAAAAAAAeQMIAAAAAAB5oWj/AAAAAHkUGAAAAAAAeaFg/wAAAACNAAAABAAAAL+hAAAAAAAABwEAAKD///9VAIsAAAAAAGGBMAAAAAAAYxqU/wAAAABxgTgAAAAAAHMamP8AAAAAYYE0AAAAAABjGpD/AAAAALcJAAAAAAAAeYIgAAAAAABlAg8AAQAAABUCHQAAAAAAeYIoAAAAAAB5o4j/AAAAAD0yqAAAAAAAZwIAAAQAAAB5o4D/AAAAAA8jAAAAAAAAeTIIAAAAAAAYBAAA+GQBAAAAAAAAAAAAXUIXAAAAAAC3CQAAAQAAAHkxAAAAAAAAeREAAAAAAAAFABMAAAAAABUCEgADAAAAeaJw/wAAAAB5oXj/AAAAAB0SDgAAAAAAvyEAAAAAAAAHAQAAEAAAAHsacP8AAAAAeSMIAAAAAAAYBAAA+GQBAAAAAAAAAAAAXUMIAAAAAAC3CQAAAQAAAHkhAAAAAAAAeREAAAAAAAAFAAQAAAAAALcJAAABAAAAeYEoAAAAAAAFAAEAAAAAAIUQAACQBQAAexpI/wAAAAB7mkD/AAAAALcJAAAAAAAAeYIQAAAAAABlAg8AAQAAABUCHQAAAAAAeYIYAAAAAAB5o4j/AAAAAD0ygQAAAAAAZwIAAAQAAAB5o4D/AAAAAA8jAAAAAAAAeTIIAAAAAAAYBAAA+GQBAAAAAAAAAAAAXUIXAAAAAAC3CQAAAQAAAHkxAAAAAAAAeREAAAAAAAAFABMAAAAAABUCEgADAAAAeaJw/wAAAAB5oXj/AAAAAB0SDgAAAAAAvyEAAAAAAAAHAQAAEAAAAHsacP8AAAAAeSMIAAAAAAAYBAAA+GQBAAAAAAAAAAAAXUMIAAAAAAC3CQAAAQAAAHkhAAAAAAAAeREAAAAAAAAFAAQAAAAAALcJAAABAAAAeYEYAAAAAAAFAAEAAAAAAIUQAABpBQAAexpY/wAAAAB7mlD/AAAAAHmBAAAAAAAAFQEHAAEAAAB5oXD/AAAAAHmieP8AAAAAXSELAAAAAAAYAQAAqP8BAAAAAAAAAAAAhRAAAGIFAACFEAAA/////3mCCAAAAAAAeaOI/wAAAAA9MlkAAAAAAGcCAAAEAAAAeaGA/wAAAAAPIQAAAAAAAAUAAwAAAAAAvxIAAAAAAAAHAgAAEAAAAHsqcP8AAAAAvxIAAAAAAAAHAgAACAAAAHkRAAAAAAAAeSMAAAAAAAC/ogAAAAAAAAcCAABA////jQAAAAMAAAC/oQAAAAAAAAcBAACg////v6EAAAAAAAAHAQAA0P///1UAGAAAAAAABwYAAAEAAAB5qfD/AAAAAHmh+P8AAAAALZF1/wAAAAC/oQAAAAAAAAcBAACg////v6EAAAAAAAAHAQAA0P///4UQAADF+P//FQAoAAAAAAB5odD/AAAAAHmj2P8AAAAAHxMAAAAAAAC/oQAAAAAAAAcBAACg////v6EAAAAAAAAHAQAA0P///3cDAAAGAAAAeaLw/wAAAAA9Mh4AAAAAAL+hAAAAAAAABwEAAND///+FEAAAX/n//wUAFQAAAAAAtwAAAAEAAAAFACcAAAAAAL+hAAAAAAAABwEAAKD///+/oQAAAAAAAAcBAADQ////hRAAAK/4//8VABIAAAAAAHmh0P8AAAAAeaPY/wAAAAAfEwAAAAAAAL+hAAAAAAAABwEAAKD///+/oQAAAAAAAAcBAADQ////dwMAAAQAAAB5ovD/AAAAAD0yCAAAAAAAv6EAAAAAAAAHAQAA0P///4UQAABN+f//eaHw/wAAAAAHAQAAAQAAAHsa8P8AAAAAv6EAAAAAAAAHAQAAoP///3mhGP8AAAAAPRYMAAAAAABnBgAABAAAAHmhEP8AAAAAD2EAAAAAAAB5EwgAAAAAAHkSAAAAAAAAeaFo/wAAAAB5FBgAAAAAAHmhYP8AAAAAjQAAAAQAAAC/AQAAAAAAALcAAAABAAAAVQEBAAAAAAC3AAAAAAAAAJUAAAAAAAAAGAEAABgAAgAAAAAAAAAAAIUQAAAgBQAAhRAAAP////8YAQAAAAACAAAAAAAAAAAAhRAAABwFAACFEAAA/////79HAAAAAAAAvygAAAAAAAC/FgAAAAAAAHmBIAAAAAAAeYIoAAAAAAB7NxAAAAAAAHsnCAAAAAAAexcAAAAAAAB5gQAAAAAAAHsa6P8AAAAAeYEIAAAAAAB7GuD/AAAAAHmBEAAAAAAAexrY/wAAAAB5gRgAAAAAAHsa0P8AAAAAeYFQAAAAAAB7Gsj/AAAAAHGJWAAAAAAAv4IAAAAAAAAHAgAAMAAAAL+hAAAAAAAABwEAAPD///+FEAAAAfn//3mBQAAAAAAAeYJIAAAAAAB5o/D/AAAAAHmk+P8AAAAAc5ZYAAAAAAB5pcj/AAAAAHtWUAAAAAAAeyZIAAAAAAB7FkAAAAAAAHtGOAAAAAAAezYwAAAAAAAYAQAA0P8BAAAAAAAAAAAAexYoAAAAAAB7diAAAAAAAHmh0P8AAAAAexYYAAAAAAB5odj/AAAAAHsWEAAAAAAAeaHg/wAAAAB7FggAAAAAAHmh6P8AAAAAexYAAAAAAACVAAAAAAAAAL83AAAAAAAAvxYAAAAAAAB5WQjwAAAAAHlRAPAAAAAAexqg/wAAAAAVAggAAAAAAGFhUAAAAAAAvxgAAAAAAABXCAAAAQAAALcCAAAAABEAFQgBAAAAAAC3AgAAKwAAAA+YAAAAAAAABQAEAAAAAAC3AgAALQAAAGFhUAAAAAAAv5gAAAAAAAAHCAAAAQAAALcDAAAAAAAAVwEAAAQAAAAVAR0AAAAAAHsqkP8AAAAAv3MAAAAAAAB7Spj/AAAAAA9DAAAAAAAAv6EAAAAAAAAHAQAA8P///79yAAAAAAAAhRAAAEL4//+3AQAAAAAAAHmi+P8AAAAAeaPw/wAAAAAdIwUAAAAAALcBAAAAAAAABQAJAAAAAAAPQQAAAAAAAAcDAAABAAAAXTIGAAAAAAB5pJj/AAAAAA9IAAAAAAAAHxgAAAAAAAC/cwAAAAAAAHmikP8AAAAABQAGAAAAAABxNQAAAAAAAFcFAADAAAAAtwQAAAEAAAAVBfP/gAAAALcEAAAAAAAABQDx/wAAAAB5YQAAAAAAABUBBgABAAAAv2EAAAAAAACFEAAA3wAAALcHAAABAAAAFQAIAAAAAAC/cAAAAAAAAJUAAAAAAAAAeWUIAAAAAAAthQwAAAAAAL9hAAAAAAAAhRAAANcAAAC3BwAAAQAAAFUA+P8AAAAAeWEgAAAAAAB5YigAAAAAAHkkGAAAAAAAeaKg/wAAAAC/kwAAAAAAAI0AAAAEAAAAvwcAAAAAAAAFAPD/AAAAAHFhUAAAAAAAVwEAAAgAAAB7moD/AAAAABUBAQAAAAAABQAOAAAAAABxYFgAAAAAALcBAAABAAAAFQABAAMAAAC/AQAAAAAAAB+FAAAAAAAAe0qY/wAAAAB7KpD/AAAAAHs6eP8AAAAAZQEZAAEAAAC3AwAAAAAAABUBHwAAAAAAv1MAAAAAAAC3BQAAAAAAAAUAHAAAAAAAe1qI/wAAAAC3AQAAMAAAAGMWVAAAAAAAtwcAAAEAAABzdlgAAAAAAL9hAAAAAAAAhRAAALMAAABVANX/AAAAAHFiWAAAAAAAtwEAAAEAAAAVAgEAAwAAAL8hAAAAAAAAeaKI/wAAAAAfggAAAAAAAGUBBwABAAAAtwMAAAAAAAAVAV8AAAAAAL8jAAAAAAAAtwIAAAAAAAAFAFwAAAAAABUBAwACAAAABQDn/wAAAAAVAVUAAgAAAAUA+f8AAAAAv1MAAAAAAAB3AwAAAQAAAAcFAAABAAAAdwUAAAEAAAB7Woj/AAAAAL+hAAAAAAAABwEAAMD///+3AgAAAAAAAIUQAABK9P//eaHI/wAAAAB7Gqj/AAAAAHmpwP8AAAAABQAKAAAAAABXBwAAAQAAAFUHEgAAAAAAYWJUAAAAAAB5YSAAAAAAAHljKAAAAAAAeTMgAAAAAACNAAAAAwAAALcHAAABAAAAv4kAAAAAAABVAK7/AAAAAHmhqP8AAAAAPRkIAAAAAAC3BwAAAQAAALcBAAABAAAAhRAAAEAEAAC/mAAAAAAAAA8IAAAAAAAALYnu/wAAAAC3BwAAAAAAAAUA7P8AAAAAYWFUAAAAAAB7Gqj/AAAAAL9hAAAAAAAAeaKQ/wAAAAB5o3j/AAAAAHmkmP8AAAAAhRAAAHoAAAC3BwAAAQAAAFUAm/8AAAAAeWEgAAAAAAB5YigAAAAAAHkkGAAAAAAAeaKg/wAAAAB5o4D/AAAAAI0AAAAEAAAAVQCU/wAAAAB5YSgAAAAAAHsamP8AAAAAeWEgAAAAAAB7GpD/AAAAAL+hAAAAAAAABwEAALD///+3AgAAAAAAAHmjiP8AAAAAhRAAABn0//95obj/AAAAAHsaoP8AAAAAeaiw/wAAAAAFAAoAAAAAAFcJAAABAAAAVQmF/wAAAAB5oZj/AAAAAHkTIAAAAAAAeaGQ/wAAAAB5oqj/AAAAAI0AAAADAAAAtwcAAAEAAAC/aAAAAAAAAFUAff8AAAAAtwcAAAAAAAB5oaD/AAAAAD0Yev8AAAAAtwkAAAEAAAC3AQAAAQAAAIUQAAAOBAAAv4YAAAAAAAAPBgAAAAAAALcHAAAAAAAALWjs/wAAAAC3CQAAAAAAAAUA6v8AAAAAvyMAAAAAAAB3AwAAAQAAAAcCAAABAAAAdwIAAAEAAAB7Koj/AAAAAL+hAAAAAAAABwEAAOD///+3AgAAAAAAAIUQAAD28///eaHo/wAAAAB7Gqj/AAAAAHmp4P8AAAAABQAKAAAAAABXBwAAAQAAAFUHEgAAAAAAYWJUAAAAAAB5YSAAAAAAAHljKAAAAAAAeTMgAAAAAACNAAAAAwAAALcHAAABAAAAv4kAAAAAAABVAFr/AAAAAHmhqP8AAAAAPRkIAAAAAAC3BwAAAQAAALcBAAABAAAAhRAAAOwDAAC/mAAAAAAAAA8IAAAAAAAALYnu/wAAAAC3BwAAAAAAAAUA7P8AAAAAYWFUAAAAAAB7Gqj/AAAAAHlhIAAAAAAAeWIoAAAAAAB5JBgAAAAAAHmioP8AAAAAeaOA/wAAAACNAAAABAAAALcHAAABAAAAVQBG/wAAAAB5YSgAAAAAAHsamP8AAAAAeWEgAAAAAAB7GpD/AAAAAL+hAAAAAAAABwEAAND///+3AgAAAAAAAHmjiP8AAAAAhRAAAMvz//95odj/AAAAAHsaoP8AAAAAeanQ/wAAAAAFAAoAAAAAAFcIAAABAAAAVQg3/wAAAAB5oZj/AAAAAHkTIAAAAAAAeaGQ/wAAAAB5oqj/AAAAAI0AAAADAAAAtwcAAAEAAAC/aQAAAAAAAFUAL/8AAAAAtwcAAAAAAAB5oaD/AAAAAD0ZLP8AAAAAtwgAAAEAAAC3AQAAAQAAAIUQAADAAwAAv5YAAAAAAAAPBgAAAAAAALcHAAAAAAAALWns/wAAAAC3CAAAAAAAAAUA6v8AAAAAv0YAAAAAAAC/NwAAAAAAAL8YAAAAAAAAvyEAAAAAAABnAQAAIAAAAHcBAAAgAAAAFQEIAAAAEQB5gSAAAAAAAHmDKAAAAAAAeTMgAAAAAACNAAAAAwAAAL8BAAAAAAAAtwAAAAEAAAAVAQEAAAAAAJUAAAAAAAAAtwAAAAAAAAAVB/3/AAAAAHmBIAAAAAAAeYIoAAAAAAB5JBgAAAAAAL9yAAAAAAAAv2MAAAAAAACNAAAABAAAAAUA9v8AAAAAvzgAAAAAAAC/KQAAAAAAAL8XAAAAAAAAeXEQAAAAAAB5cgAAAAAAABUCAgABAAAAVQEDAAAAAAAFADMAAAAAAFUBAQAAAAAABQA0AAAAAAC/kQAAAAAAAA+BAAAAAAAAeXYYAAAAAAB7GvD/AAAAAHua6P8AAAAAtwEAAAAAAAB7GuD/AAAAAL+hAAAAAAAABwEAAOD///+FEAAAx/T//3sK+P8AAAAAv6EAAAAAAAAHAQAA0P///7+iAAAAAAAABwIAAPj///+FEAAAavT//2Gh2P8AAAAAFQEdAAAAEQB5odD/AAAAABUGCwAAAAAAv6EAAAAAAAAHAQAAwP///7+iAAAAAAAABwIAAPj///+FEAAAYfT//2GhyP8AAAAAFQEUAAAAEQAHBgAA/////3mhwP8AAAAAFQYBAAAAAAAFAPX/AAAAABUBCgAAAAAAHYEJAAAAAAC3AgAAAAAAAD2BCAAAAAAAv5MAAAAAAAAPEwAAAAAAAHEzAAAAAAAAZwMAADgAAADHAwAAOAAAALcEAADA////bTQBAAAAAAC/kgAAAAAAABUCAQAAAAAAvxgAAAAAAAAVAgEAAAAAAL8pAAAAAAAAeXEAAAAAAAAVAQMAAQAAAHlxIAAAAAAAeXIoAAAAAAAFAB4AAAAAAL+WAAAAAAAAD4YAAAAAAAC/oQAAAAAAAAcBAACw////v5IAAAAAAAC/YwAAAAAAAIUQAADt9v//twEAAAAAAAB5orj/AAAAAHmjsP8AAAAAHSMFAAAAAAC3AQAAAAAAAAUACwAAAAAAD0EAAAAAAAAHAwAAAQAAAF0yCAAAAAAAv4IAAAAAAAAfEgAAAAAAAL9zAAAAAAAAeTcIAAAAAAAtJw4AAAAAAHkxIAAAAAAAeTIoAAAAAAAFAAYAAAAAAHE1AAAAAAAAVwUAAMAAAAC3BAAAAQAAABUF8f+AAAAAtwQAAAAAAAAFAO//AAAAAHkkGAAAAAAAv5IAAAAAAAC/gwAAAAAAAI0AAAAEAAAAlQAAAAAAAAB7Onj/AAAAAL+hAAAAAAAABwEAAKD///97mmD/AAAAAL+SAAAAAAAAv2MAAAAAAACFEAAAyvb//7cDAAAAAAAAeaGo/wAAAAB5oqD/AAAAALcJAAAAAAAAHRIFAAAAAAC3CQAAAAAAAAUACgAAAAAAD0kAAAAAAAAHAgAAAQAAAF0hBwAAAAAAH4kAAAAAAAB5oXj/AAAAAHESWAAAAAAAtwEAAAAAAAAVAggAAwAAAL8hAAAAAAAABQAGAAAAAABxJQAAAAAAAFcFAADAAAAAtwQAAAEAAAAVBfL/gAAAALcEAAAAAAAABQDw/wAAAAAPeQAAAAAAAHuKaP8AAAAAZQEEAAEAAAAVAQkAAAAAAL+TAAAAAAAAtwkAAAAAAAAFAAYAAAAAABUBAQACAAAABQD7/wAAAAC/kwAAAAAAAHcDAAABAAAABwkAAAEAAAB3CQAAAQAAAL+hAAAAAAAABwEAAJD///+3AgAAAAAAAIUQAAAJ8///eaGY/wAAAAB7GnD/AAAAAHmnkP8AAAAABQAMAAAAAABXBgAAAQAAAFUGFAAAAAAAeaN4/wAAAABhMlQAAAAAAHkxIAAAAAAAeTMoAAAAAAB5MyAAAAAAAI0AAAADAAAAvwEAAAAAAAC3AAAAAQAAAL+HAAAAAAAAVQHA/wAAAAB5oXD/AAAAAD0XCAAAAAAAtwYAAAEAAAC3AQAAAQAAAIUQAAD9AgAAv3gAAAAAAAAPCAAAAAAAAC2H7P8AAAAAtwYAAAAAAAAFAOr/AAAAAHmieP8AAAAAYSFUAAAAAAB7GnD/AAAAAHkhIAAAAAAAeSIoAAAAAAB5JBgAAAAAAHmiYP8AAAAAeaNo/wAAAACNAAAABAAAAL8BAAAAAAAAtwAAAAEAAABVAar/AAAAAHmheP8AAAAAeRIoAAAAAAB7Kmj/AAAAAHkRIAAAAAAAexp4/wAAAAC/oQAAAAAAAAcBAACA////twIAAAAAAAC/kwAAAAAAAIUQAADZ8v//eaiI/wAAAAB5qYD/AAAAAAUACwAAAAAAVwcAAAEAAABVB5v/AAAAAHmhaP8AAAAAeRMgAAAAAAB5oXj/AAAAAHmicP8AAAAAjQAAAAMAAAC/AQAAAAAAALcAAAABAAAAv2kAAAAAAABVAZL/AAAAALcAAAAAAAAAPYmQ/wAAAAC3BwAAAQAAALcBAAABAAAAhRAAAM8CAAC/lgAAAAAAAA8GAAAAAAAAtwAAAAAAAAAtaez/AAAAALcHAAAAAAAABQDq/wAAAAB5FCAAAAAAAHkRKAAAAAAAeRUYAAAAAAC/QQAAAAAAAI0AAAAFAAAAlQAAAAAAAAB5FCgAAAAAAHkRIAAAAAAAeSMoAAAAAAB7Ovj/AAAAAHkjIAAAAAAAezrw/wAAAAB5IxgAAAAAAHs66P8AAAAAeSMQAAAAAAB7OuD/AAAAAHkjCAAAAAAAezrY/wAAAAB5IgAAAAAAAHsq0P8AAAAAv6MAAAAAAAAHAwAA0P///79CAAAAAAAAhRAAAFf8//+VAAAAAAAAAGEQUAAAAAAAVwAAAAEAAACVAAAAAAAAAHEQUAAAAAAAVwAAAAQAAAB3AAAAAgAAAJUAAAAAAAAAcRBQAAAAAABXAAAAEAAAAHcAAAAEAAAAlQAAAAAAAABxEFAAAAAAAFcAAAAgAAAAdwAAAAUAAACVAAAAAAAAAIUQAAB7+v//lQAAAAAAAACFEAAAnvr//5UAAAAAAAAAvyQAAAAAAABxEQAAAAAAABgCAACq7AEAAAAAAAAAAAAVAQIAAAAAABgCAABwwwEAAAAAAAAAAAC3AwAABQAAABUBAQAAAAAAtwMAAAQAAAC/QQAAAAAAAIUQAADv/v//lQAAAAAAAAC/NgAAAAAAAL8nAAAAAAAAvxgAAAAAAAB5YSAAAAAAAHliKAAAAAAAeSMgAAAAAAC3AgAAIgAAAI0AAAADAAAAtwEAAAEAAAAVAAIAAAAAAL8QAAAAAAAAlQAAAAAAAAC/gQAAAAAAAHt6IP8AAAAAD3EAAAAAAAB7Gqj/AAAAAHuKGP8AAAAAe4qg/wAAAAC3CAAAAAAAAHuKmP8AAAAAv6EAAAAAAAAHAQAASP///7+iAAAAAAAABwIAAJj///+FEAAAqfP//3mhWP8AAAAAeaNQ/wAAAAB7Gjj/AAAAAB0xVAEAAAAAtwgAAAAAAAC/oQAAAAAAAAcBAAB1////exoo/wAAAAB5qUj/AAAAAL8yAAAAAAAAvzcAAAAAAAAFAAkAAAAAAA+YAAAAAAAAeaEw/wAAAAAfGQAAAAAAAHmnQP8AAAAAD3kAAAAAAAC/cwAAAAAAAL9yAAAAAAAAeaE4/wAAAAAdcUMBAAAAAHsqMP8AAAAABwcAAAEAAABxMgAAAAAAAL8hAAAAAAAAZwEAADgAAADHAQAAOAAAAGUBRgD/////twQAAAAAAAC/IQAAAAAAAFcBAAAfAAAAeaU4/wAAAAC/UAAAAAAAAB1XBQAAAAAAcTQBAAAAAAAHAwAAAgAAAFcEAAA/AAAAvzcAAAAAAAC/MAAAAAAAAHt6QP8AAAAAvxMAAAAAAABnAwAABgAAAL9HAAAAAAAATzcAAAAAAAAlAgEA3wAAAAUANgAAAAAAtwMAAAAAAAB5pzj/AAAAAL91AAAAAAAAHXAFAAAAAABxAwAAAAAAAAcAAAABAAAAVwMAAD8AAAB7CkD/AAAAAL8FAAAAAAAAZwQAAAYAAABPQwAAAAAAAL8UAAAAAAAAZwQAAAwAAAC/NwAAAAAAAE9HAAAAAAAAtwQAAPAAAAAtJCUAAAAAALcCAAAAAAAAeaQ4/wAAAAAdRQQAAAAAAHFSAAAAAAAABwUAAAEAAABXAgAAPwAAAHtaQP8AAAAAZwMAAAYAAABnAQAAEgAAAFcBAAAAABwATxMAAAAAAABPIwAAAAAAAL83AAAAAAAAVQMXAAAAEQB5ohj/AAAAAHsqyP8AAAAAeaMg/wAAAAB7OtD/AAAAAHuKSP8AAAAAezpg/wAAAAAVCPUAAAAAAB049AAAAAAAPTgGAAAAAAC/IQAAAAAAAA+BAAAAAAAAcREAAAAAAABnAQAAOAAAAMcBAAA4AAAAZQHtAL////+/oQAAAAAAAAcBAABg////exqo/wAAAAC/oQAAAAAAAAcBAABI////BQD4AAAAAAB7ekD/AAAAAL8nAAAAAAAAtwIAAAIAAABlBwcAIQAAALcDAAB0AAAAFQdNAAkAAAAVBw4ACgAAABUHAQANAAAABQAIAAAAAAC3AwAAcgAAAAUASAAAAAAAFQcDACIAAAAVBwIAJwAAABUHAQBcAAAABQACAAAAAAC/cwAAAAAAAAUAQgAAAAAAv3EAAAAAAACFEAAAgvf//xUAAwAAAAAABQAHAAAAAAC3AwAAbgAAAAUAPAAAAAAAv3EAAAAAAACFEAAALvf//7cCAAABAAAAv3MAAAAAAABVADcAAAAAAL9yAAAAAAAARwIAAAEAAAC/IQAAAAAAAHcBAAABAAAATxIAAAAAAAC/IQAAAAAAAHcBAAACAAAATxIAAAAAAAC/IQAAAAAAAHcBAAAEAAAATxIAAAAAAABpoZj/AAAAAGsayP8AAAAAcaGa/wAAAABzGsr/AAAAAL8hAAAAAAAAdwEAAAgAAABPEgAAAAAAAL8hAAAAAAAAdwEAABAAAABPEgAAAAAAAL8hAAAAAAAAdwEAACAAAABPEgAAAAAAAKcCAAD/////vyEAAAAAAAB3AQAAAQAAABgDAABVVVVVAAAAAFVVVVVfMQAAAAAAAB8SAAAAAAAAvyEAAAAAAAAYAwAAMzMzMwAAAAAzMzMzXzEAAAAAAAB3AgAAAgAAAF8yAAAAAAAADyEAAAAAAAC/EgAAAAAAAHcCAAAEAAAADyEAAAAAAAAYAgAADw8PDwAAAAAPDw8PXyEAAAAAAAAYAgAAAQEBAQAAAAABAQEBLyEAAAAAAAB3AQAAOAAAAAcBAADg////GAIAAPz///8AAAAAAAAAAF8hAAAAAAAAtwIAAAMAAAB3AQAAAgAAAKcBAAAHAAAAtwQAAAUAAABzSnT/AAAAAGN6cP8AAAAAexpo/wAAAABjOmT/AAAAAGMqYP8AAAAAaaHI/wAAAABrGpj/AAAAAHGiyv8AAAAAcyqa/wAAAAB5oyj/AAAAAHMjAgAAAAAAaxMAAAAAAAC/oQAAAAAAAAcBAACY////v6IAAAAAAAAHAgAAYP///4UQAAAb+///eaGY/wAAAAB5oqj/AAAAAHsqgP8AAAAAeaOg/wAAAAB7Onj/AAAAALcEAAABAAAAe0qI/wAAAAB7GpD/AAAAAFUDAQABAAAAHRIiAAAAAAC/oQAAAAAAAAcBAAB4////exro/wAAAAC3AQAAAgAAAHsawP8AAAAAv6EAAAAAAAAHAQAAyP///3sauP8AAAAAtwEAAAAAAAB7Gqj/AAAAALcBAAADAAAAexqg/wAAAAAYAQAAYP8BAAAAAAAAAAAAexqY/wAAAAC/oQAAAAAAAAcBAADw////exrY/wAAAAAYAQAAyKABAAAAAAAAAAAAexrg/wAAAAB7GtD/AAAAAL+hAAAAAAAABwEAAOj///97Gsj/AAAAAL+hAAAAAAAABwEAAIj///97GvD/AAAAAL+hAAAAAAAABwEAAJj///8YAgAAkP8BAAAAAAAAAAAAhRAAAMoBAACFEAAA/////xUBGf8BAAAAeaIg/wAAAAB7KtD/AAAAAHmjGP8AAAAAezrI/wAAAAB7inj/AAAAAHuaiP8AAAAALZgJAAAAAAAVCA4AAAAAAB0oDQAAAAAAPSgGAAAAAAC/MQAAAAAAAA+BAAAAAAAAcREAAAAAAABnAQAAOAAAAMcBAAA4AAAAZQEGAL////+/oQAAAAAAAAcBAACI////exqo/wAAAAC/oQAAAAAAAAcBAAB4////BQBQAAAAAAAVCQkAAAAAAB0pCAAAAAAAPSn3/wAAAAC/MQAAAAAAAA+RAAAAAAAAcREAAAAAAABnAQAAOAAAAMcBAAA4AAAAZQEBAL////8FAPD/AAAAAL8yAAAAAAAAD4IAAAAAAAC/kwAAAAAAAB+DAAAAAAAAeWEgAAAAAAB5ZCgAAAAAAHlEGAAAAAAAjQAAAAQAAAAVAAIAAAAAALcBAAABAAAABQDS/gAAAAB5oXD/AAAAAHsaqP8AAAAAeaFo/wAAAAB7GqD/AAAAAHmhYP8AAAAAexqY/wAAAAC/oQAAAAAAAAcBAADI////v6IAAAAAAAAHAgAAmP///4UQAADC+v//eaHY/wAAAAB7Gqj/AAAAAHmh0P8AAAAAexqg/wAAAAB5ocj/AAAAAHsamP8AAAAABQAHAAAAAAB5YSAAAAAAAHliKAAAAAAAeSMgAAAAAAC/AgAAAAAAAI0AAAADAAAAFQABAAAAAAAFAOX/AAAAAL+hAAAAAAAABwEAAJj///+FEAAAo/r//2cAAAAgAAAAdwAAACAAAABVAPP/AAARALcIAAABAAAAtwEAAIAAAAAtccv+AAAAALcIAAACAAAAtwEAAAAIAAAtccj+AAAAALcIAAADAAAAtwEAAAAAAQAtccX+AAAAALcIAAAEAAAABQDD/gAAAAAPggAAAAAAAB+DAAAAAAAAeWEgAAAAAAB5ZCgAAAAAAHlEGAAAAAAAjQAAAAQAAAC3AQAAAQAAAFUAoP4AAAAAeWEgAAAAAAB5YigAAAAAAHkjIAAAAAAAtwIAACIAAACNAAAAAwAAAL8BAAAAAAAABQCZ/gAAAACFEAAAHQEAAAUA8/4AAAAAexqg/wAAAAC/oQAAAAAAAAcBAADI////exqY/wAAAAC/oQAAAAAAAAcBAACY////hRAAAJT6//+FEAAA/////78kAAAAAAAAvxIAAAAAAAC/MQAAAAAAAL9DAAAAAAAAhRAAAG79//+VAAAAAAAAAL8mAAAAAAAAvxgAAAAAAAB5YSAAAAAAAHliKAAAAAAAeSMgAAAAAAC3AgAAJwAAAI0AAAADAAAAtwcAAAEAAAAVAAIAAAAAAL9wAAAAAAAAlQAAAAAAAAC3AgAAAgAAAGGIAAAAAAAAZQgHACEAAAC3AwAAdAAAABUITQAJAAAAFQgOAAoAAAAVCAEADQAAAAUACAAAAAAAtwMAAHIAAAAFAEgAAAAAABUIAwAiAAAAFQgCACcAAAAVCAEAXAAAAAUAAgAAAAAAv4MAAAAAAAAFAEIAAAAAAL+BAAAAAAAAhRAAAHL2//8VAAMAAAAAAAUABwAAAAAAtwMAAG4AAAAFADwAAAAAAL+BAAAAAAAAhRAAAB72//+3AgAAAQAAAL+DAAAAAAAAVQA3AAAAAAC/ggAAAAAAAEcCAAABAAAAvyEAAAAAAAB3AQAAAQAAAE8SAAAAAAAAvyEAAAAAAAB3AQAAAgAAAE8SAAAAAAAAvyEAAAAAAAB3AQAABAAAAE8SAAAAAAAAaaHY/wAAAABrGvT/AAAAAHGh2v8AAAAAcxr2/wAAAAC/IQAAAAAAAHcBAAAIAAAATxIAAAAAAAC/IQAAAAAAAHcBAAAQAAAATxIAAAAAAAC/IQAAAAAAAHcBAAAgAAAATxIAAAAAAACnAgAA/////xgBAABVVVVVAAAAAFVVVVW/IwAAAAAAAHcDAAABAAAAXxMAAAAAAAAfMgAAAAAAABgDAAAzMzMzAAAAADMzMzO/IQAAAAAAAF8xAAAAAAAAdwIAAAIAAABfMgAAAAAAAA8hAAAAAAAAvxIAAAAAAAB3AgAABAAAAA8hAAAAAAAAGAIAAA8PDw8AAAAADw8PD18hAAAAAAAAGAIAAAEBAQEAAAAAAQEBAS8hAAAAAAAAdwEAADgAAAAHAQAA4P///xgCAAD8////AAAAAAAAAABfIQAAAAAAALcCAAADAAAAdwEAAAIAAACnAQAABwAAALcEAAAFAAAAc0rs/wAAAABjiuj/AAAAAHsa4P8AAAAAYzrc/wAAAABjKtj/AAAAAGmh9P8AAAAAaxrt/wAAAABxofb/AAAAAHMa7/8AAAAAv6EAAAAAAAAHAQAAwP///7+iAAAAAAAABwIAANj///+FEAAAGPr//3mh0P8AAAAAexro/wAAAAB5ocj/AAAAAHsa4P8AAAAAeaHA/wAAAAB7Gtj/AAAAAAUABwAAAAAAeWEgAAAAAAB5YigAAAAAAHkjIAAAAAAAvwIAAAAAAACNAAAAAwAAABUAAQAAAAAABQCP/wAAAAC/oQAAAAAAAAcBAADY////hRAAAPn5//9nAAAAIAAAAHcAAAAgAAAAVQDz/wAAEQB5YSAAAAAAAHliKAAAAAAAeSMgAAAAAAC3AgAAJwAAAI0AAAADAAAAvwcAAAAAAAAFAIL/AAAAAHkjAAAAAAAAFQMCAAEAAAB5IxAAAAAAAFUDFQABAAAAYREAAAAAAAC3AwAAAAAAAGM6/P8AAAAAtwMAAIAAAAAtEw0AAAAAALcDAAAACAAALRMBAAAAAAAFABQAAAAAAL8TAAAAAAAAVwMAAD8AAABHAwAAgAAAAHM6/f8AAAAAdwEAAAYAAABXAQAAHwAAAEcBAADAAAAAcxr8/wAAAAC3AwAAAgAAAAUALgAAAAAAcxr8/wAAAAC3AwAAAQAAAAUAKwAAAAAAYRMAAAAAAAB5ISAAAAAAAHkiKAAAAAAAeSQgAAAAAAC/MgAAAAAAAI0AAAAEAAAABQApAAAAAAC3AwAAAAABAC0TAQAAAAAABQAPAAAAAAC/EwAAAAAAAFcDAAA/AAAARwMAAIAAAABzOv7/AAAAAL8TAAAAAAAAdwMAAAYAAABXAwAAPwAAAEcDAACAAAAAczr9/wAAAAB3AQAADAAAAFcBAAAPAAAARwEAAOAAAABzGvz/AAAAALcDAAADAAAABQASAAAAAAC/EwAAAAAAAFcDAAA/AAAARwMAAIAAAABzOv//AAAAAL8TAAAAAAAAdwMAABIAAABHAwAA8AAAAHM6/P8AAAAAvxMAAAAAAAB3AwAABgAAAFcDAAA/AAAARwMAAIAAAABzOv7/AAAAAHcBAAAMAAAAVwEAAD8AAABHAQAAgAAAAHMa/f8AAAAAtwMAAAQAAAC/pAAAAAAAAAcEAAD8////vyEAAAAAAAC/QgAAAAAAAIUQAACd/P//lQAAAAAAAAC/pgAAAAAAAAcGAADo////v2EAAAAAAAAYAwAAr+wBAAAAAAAAAAAAtwQAAAUAAACFEAAAN/j//79hAAAAAAAAhRAAAI34//+VAAAAAAAAAHkTAAAAAAAAeREIAAAAAAB5FBgAAAAAAL8xAAAAAAAAjQAAAAQAAACVAAAAAAAAAHkRAAAAAAAAYSNQAAAAAAC/NAAAAAAAAFcEAAAQAAAAVQQFAAAAAABXAwAAIAAAABUDAQAAAAAABQAEAAAAAACFEAAAHwEAAAUAAwAAAAAAhRAAAK3v//8FAAEAAAAAAIUQAACu7///lQAAAAAAAAC/JAAAAAAAAHkTCAAAAAAAeRIAAAAAAAC/QQAAAAAAAIUQAAB5/P//lQAAAAAAAAAYAAAARm0KeQAAAAA9mp/PlQAAAAAAAAC/pgAAAAAAAAcGAADw////v2EAAAAAAAAYAwAAtOwBAAAAAAAAAAAAtwQAAAsAAACFEAAAb/3//79hAAAAAAAAhRAAAPT3//+VAAAAAAAAAL+mAAAAAAAABwYAAPD///+/YQAAAAAAABgDAAC/7AEAAAAAAAAAAAC3BAAADgAAAIUQAABl/f//v2EAAAAAAACFEAAA6vf//5UAAAAAAAAAlQAAAAAAAACVAAAAAAAAAJUAAAAAAAAAvxAAAAAAAACVAAAAAAAAAHkSEAAAAAAAeRMYAAAAAAB5FCAAAAAAAHkVAAAAAAAAeREIAAAAAAC3AAAACAAAAHsKyP8AAAAAtwAAAAAAAAB7CtD/AAAAAHsKuP8AAAAAtwAAAAEAAAB7CrD/AAAAAL+gAAAAAAAABwAAANj///97Cqj/AAAAAHsa4P8AAAAAe1rY/wAAAAB7Svj/AAAAAHs68P8AAAAAeyro/wAAAAC/oQAAAAAAAAcBAACo////v6IAAAAAAAAHAgAA6P///4UQAAAqAAAAhRAAAP////+/FgAAAAAAAHs6qP8AAAAAeyqg/wAAAAC/oQAAAAAAAAcBAACQ////v6IAAAAAAAAHAgAAqP///xgDAACQoAEAAAAAAAAAAACFEAAAY/n//3mnkP8AAAAAeaiY/wAAAAC/oQAAAAAAAAcBAACA////v6IAAAAAAAAHAgAAoP///xgDAACQoAEAAAAAAAAAAACFEAAAWvn//3uK6P8AAAAAe3rg/wAAAAC/oQAAAAAAAAcBAADg////exrQ/wAAAAC3AQAAAAAAAHsawP8AAAAAtwEAAAIAAAB7Gtj/AAAAAHsauP8AAAAAGAEAAFAAAgAAAAAAAAAAAHsasP8AAAAAeaGI/wAAAAB7Gvj/AAAAAHmhgP8AAAAAexrw/wAAAAC/oQAAAAAAAAcBAACw////v2IAAAAAAACFEAAAAQAAAIUQAAD/////vxYAAAAAAABhJRQAAAAAAGEkEAAAAAAAeSMIAAAAAAB5IgAAAAAAAL+hAAAAAAAABwEAAND///+FEAAAj+///3tqsP8AAAAAGAEAADAAAgAAAAAAAAAAAHsaqP8AAAAAtwEAAAEAAAB7GqD/AAAAAHmh0P8AAAAAexq4/wAAAAB5odj/AAAAAHsawP8AAAAAeaHg/wAAAAB7Gsj/AAAAAL+hAAAAAAAABwEAAKD///+FEAAAhe7//4UQAAD/////twMAAAAAAAAVAgIAAAAAALcDAAABAAAAcSQAAAAAAABzQQEAAAAAAHMxAAAAAAAAlQAAAAAAAAAYAQAAcAACAAAAAAAAAAAAhRAAAJv///+FEAAA/////xgBAACYAAIAAAAAAAAAAACFEAAAl////4UQAAD/////vyYAAAAAAAC/YQAAAAAAAIUQAADh/P//eWEQAAAAAAAVAQIAAQAAAIUQAAD2////hRAAAP////+FEAAA8P///4UQAAD/////vzYAAAAAAAC3BAAAJwAAABgFAAAg9gEAAAAAAAAAAAB5UwAAAAAAALcAAAAQJwAALRAiAAAAAAB7KtD/AAAAAL9iAAAAAAAAtwQAAAAAAAC/EAAAAAAAAL+mAAAAAAAABwYAANn///8PRgAAAAAAADcBAAAQJwAAvxcAAAAAAAAnBwAAECcAAL8IAAAAAAAAH3gAAAAAAAC/hwAAAAAAAFcHAAD//wAANwcAAGQAAAC/eQAAAAAAAGcJAAABAAAAvzUAAAAAAAAPlQAAAAAAAGlVAAAAAAAAa1YjAAAAAAAnBwAAZAAAAB94AAAAAAAAVwgAAP//AABnCAAAAQAAAL81AAAAAAAAD4UAAAAAAABpVQAAAAAAAGtWJQAAAAAABwQAAPz///8lAOT//+D1BQcEAAAnAAAAvyYAAAAAAAB5otD/AAAAAGUBAQBjAAAABQARAAAAAAC/FQAAAAAAAFcFAAD//wAANwUAAGQAAAC/UAAAAAAAACcAAABkAAAAHwEAAAAAAABXAQAA//8AAGcBAAABAAAAvzAAAAAAAAAPEAAAAAAAAAcEAAD+////v6EAAAAAAAAHAQAA2f///w9BAAAAAAAAaQAAAAAAAABrAQAAAAAAAL9RAAAAAAAAtwUAAAoAAABtFQkAAAAAAGcBAAABAAAADxMAAAAAAAAHBAAA/v///7+hAAAAAAAABwEAANn///8PQQAAAAAAAGkzAAAAAAAAazEAAAAAAAAFAAYAAAAAAAcEAAD/////v6MAAAAAAAAHAwAA2f///w9DAAAAAAAABwEAADAAAABzEwAAAAAAAL+hAAAAAAAABwEAANn///8PQQAAAAAAAHsaAPAAAAAAtwEAACcAAAAfQQAAAAAAAHsaCPAAAAAAv6UAAAAAAAC/YQAAAAAAABgDAADf7AEAAAAAAAAAAAC3BAAAAAAAAIUQAABi+v//lQAAAAAAAAC/JgAAAAAAAIUQAAC27v//vwEAAAAAAAC3AgAAAQAAAL9jAAAAAAAAhRAAAJ////+VAAAAAAAAAL8mAAAAAAAAYRgAAAAAAABnCAAAIAAAAMcIAAAgAAAAtwcAAAEAAABlCAEA/////7cHAAAAAAAAhRAAAKPu//9lCAEA/////4cAAAAAAAAAvwEAAAAAAAC/cgAAAAAAAL9jAAAAAAAAhRAAAJD///+VAAAAAAAAAL8mAAAAAAAAeRgAAAAAAAC3BwAAAQAAAGUIAQD/////twcAAAAAAACFEAAAmu7//2UIAQD/////hwAAAAAAAAC/AQAAAAAAAL9yAAAAAAAAv2MAAAAAAACFEAAAg////5UAAAAAAAAAvyYAAAAAAACFEAAAke7//78BAAAAAAAAtwIAAAEAAAC/YwAAAAAAAIUQAAB8////lQAAAAAAAAC/JgAAAAAAAIUQAACK7v//vwEAAAAAAAC3AgAAAQAAAL9jAAAAAAAAhRAAAHX///+VAAAAAAAAAHkXAAAAAAAAeXEAAAAAAAAVAQgAAQAAAL+mAAAAAAAABwYAAOD///+/YQAAAAAAABgDAAB8wwEAAAAAAAAAAAC3BAAABAAAAIUQAABW/P//BQAPAAAAAAC/pgAAAAAAAAcGAADg////v2EAAAAAAAAYAwAAaMMBAAAAAAAAAAAAtwQAAAQAAACFEAAATvz//wcHAAAIAAAAe3r4/wAAAAC/ogAAAAAAAAcCAAD4////v2EAAAAAAAAYAwAAwAACAAAAAAAAAAAAhRAAAPX2//+/YQAAAAAAAIUQAAA79///lQAAAAAAAAC/EAAAAAAAAJUAAAAAAAAAvxAAAAAAAACVAAAAAAAAALcEAABAAAAAFQIrAAAAAAC/JAAAAAAAAHcEAAABAAAAvyMAAAAAAABPQwAAAAAAAL80AAAAAAAAdwQAAAIAAABPQwAAAAAAAL80AAAAAAAAdwQAAAQAAABPQwAAAAAAAL80AAAAAAAAdwQAAAgAAABPQwAAAAAAAL80AAAAAAAAdwQAABAAAABPQwAAAAAAAL80AAAAAAAAdwQAACAAAABPQwAAAAAAAKcDAAD/////GAQAAFVVVVUAAAAAVVVVVb81AAAAAAAAdwUAAAEAAABfRQAAAAAAAB9TAAAAAAAAGAUAADMzMzMAAAAAMzMzM780AAAAAAAAX1QAAAAAAAB3AwAAAgAAAF9TAAAAAAAADzQAAAAAAAC/QwAAAAAAAHcDAAAEAAAADzQAAAAAAAAYAwAADw8PDwAAAAAPDw8PXzQAAAAAAAAYAwAAAQEBAQAAAAABAQEBLzQAAAAAAAB3BAAAOAAAALcDAAAMAAAAH0MAAAAAAABjMQAAAAAAAAcEAAA1AAAAVwQAAD8AAABvQgAAAAAAAHshCAAAAAAAlQAAAAAAAAC/EAAAAAAAABUDCAAAAAAAvwEAAAAAAABxJAAAAAAAAHNBAAAAAAAABwEAAAEAAAAHAgAAAQAAAAcDAAD/////FQMBAAAAAAAFAPn/AAAAAJUAAAAAAAAAtwAAAAAAAAAVAwoAAAAAAAUABAAAAAAABwIAAAEAAAAHAQAAAQAAAAcDAAD/////FQMFAAAAAABxJAAAAAAAAHEVAAAAAAAAHUX5/wAAAAAfRQAAAAAAAL9QAAAAAAAAlQAAAAAAAAC/JgAAAAAAAIUQAACt////vwgAAAAAAAC/YQAAAAAAAIUQAACq////vwkAAAAAAAC/hwAAAAAAAHcHAAA0AAAAtwEAAP8HAACFEAAAbwEAAL8GAAAAAAAAX3YAAAAAAAC/kgAAAAAAAK+CAAAAAAAAGAEAAAAAAAAAAAAAAAAAgF8SAAAAAAAAeyq4/wAAAAC/lwAAAAAAAHcHAAA0AAAAtwEAAP8HAACFEAAAYwEAAF9wAAAAAAAAGAEAAP////8AAAAA//8PAL+CAAAAAAAAXxIAAAAAAAB7KsD/AAAAAHuasP8AAAAAv5IAAAAAAAC/CQAAAAAAAF8SAAAAAAAAeyrI/wAAAAB7aqj/AAAAAL9hAAAAAAAAtwIAAAEAAACFEAAAIgEAAL8HAAAAAAAAtwEAAP4HAACFEAAAUQEAAD0HCAAAAAAAv5EAAAAAAAC3AgAAAQAAAIUQAAAbAQAAvwcAAAAAAAC3AQAA/gcAAIUQAABKAQAAtwMAAAAAAAAtcEAAAAAAABgCAAD/////AAAAAP///3+/hAAAAAAAAF8kAAAAAAAAGAMAAAAAAAAAAAAAAADwfy00CgAAAAAAeaWw/wAAAAC/VwAAAAAAAF8nAAAAAAAALTcBAAAAAAAFAAoAAAAAABgBAAAAAAAAAAAAAAAACABPFQAAAAAAAL9RAAAAAAAABQDHAAAAAAAYAQAAAAAAAAAAAAAAAAgATxgAAAAAAAC/gQAAAAAAAAUAwgAAAAAAGAIAAAAAAAAAAAAAAADwfx0kAQAAAAAABQAJAAAAAAAYAQAAAAAAAAAAAAAAAPh/HSe7AAAAAAAYAQAAAAAAAAAAAAAAAACAXxUAAAAAAACvhQAAAAAAAL9RAAAAAAAABQC1AAAAAAB5obj/AAAAAB0nswAAAAAAFQS0AAAAAAAVB64AAAAAALcDAAAAAAAAGAIAAAAAAAAAAAAAAAAQAC1CAQAAAAAABQAHAAAAAAC/oQAAAAAAAAcBAADw////eaLA/wAAAACFEAAAUv///3mh+P8AAAAAexrA/wAAAABho/D/AAAAABgBAAD/////AAAAAP//DwAtFwoAAAAAAL+hAAAAAAAABwEAAOD///95osj/AAAAAL82AAAAAAAAhRAAAEf///+/YwAAAAAAAGGh4P8AAAAAHxMAAAAAAAB5oej/AAAAAHsayP8AAAAAezqw/wAAAAAYAQAAAAAAAAAAAAAAABAAeajI/wAAAABPGAAAAAAAAHmhqP8AAAAAhRAAAP8AAAB7CqD/AAAAAL+RAAAAAAAAhRAAAPwAAAB7Cqj/AAAAALcBAAAVAAAAhRAAAL0AAABXAAAAPwAAAL+BAAAAAAAAfwEAAAAAAACFEAAA9QAAAL8GAAAAAAAAtwIAADPzBHUfYgAAAAAAAGcGAAAgAAAAdwYAACAAAABnAgAAIAAAAHcCAAAgAAAAvyEAAAAAAAAvYQAAAAAAAHcBAAAgAAAAhwEAAAAAAABnAQAAIAAAAHcBAAAgAAAALyEAAAAAAAB3AQAAHwAAAGcBAAAgAAAAdwEAACAAAAC/EgAAAAAAAC9iAAAAAAAAdwIAACAAAACHAgAAAAAAAGcCAAAgAAAAdwIAACAAAAAvEgAAAAAAAHcCAAAfAAAAZwIAACAAAAB3AgAAIAAAAL8nAAAAAAAAL2cAAAAAAAB3BwAAIAAAAIcHAAAAAAAAZwcAACAAAAB3BwAAIAAAAC8nAAAAAAAAtwEAAAsAAACFEAAAlQAAAFcAAAA/AAAAe4rI/wAAAAC/gQAAAAAAAG8BAAAAAAAAhRAAAMwAAABnAAAAIAAAAHcAAAAgAAAAdwcAAB8AAAAHBwAA/////2cHAAAgAAAAdwcAACAAAAC/cgAAAAAAAC9iAAAAAAAAv3EAAAAAAAAvAQAAAAAAAHcBAAAgAAAADxIAAAAAAACHAgAAAAAAAL8hAAAAAAAAdwEAACAAAAAvcQAAAAAAAGcCAAAgAAAAdwIAACAAAAAvcgAAAAAAAHcCAAAgAAAADyEAAAAAAAAHAQAA/v///4UQAAB7AAAAeaLA/wAAAABnAgAAAgAAABgBAAAAAAAAAAAAAAAAQABPEgAAAAAAAL+hAAAAAAAABwEAAND///+/AwAAAAAAAIUQAAC2AAAAtwcAADUAAAAYCQAAAAAAAAAAAAAAACAAeajQ/wAAAAAtiQEAAAAAALcHAAA0AAAAGAIAAP////8AAAAA//8fALcBAAABAAAALSgBAAAAAAC3AQAAAAAAAL+GAAAAAAAAfxYAAAAAAAC/YQAAAAAAAHmiyP8AAAAAhRAAAGkAAAB5ocD/AAAAAG9xAAAAAAAAvwIAAAAAAACFEAAAaAAAALcDAAABAAAALYkBAAAAAAC3AwAAAAAAAHmhqP8AAAAAeaKg/wAAAAAfEgAAAAAAAHmhsP8AAAAADxIAAAAAAAAfMgAAAAAAAGcCAAAgAAAAGAEAAAAAAAAAAAAA/wMAAA8SAAAAAAAAxwIAACAAAAB5obj/AAAAAGUCFwD+BwAAtwcAAAEAAABtJxgAAAAAAGcAAAABAAAAeaHI/wAAAAAtEAEAAAAAALcHAAAAAAAAvyEAAAAAAACFEAAAhgAAAL8IAAAAAAAAv3EAAAAAAACFEAAAfwAAABgBAAD/////AAAAAP//DwBfFgAAAAAAAGcIAAA0AAAAT2gAAAAAAAC/gQAAAAAAAL8CAAAAAAAAhRAAAD8AAAB5obj/AAAAAE8QAAAAAAAAvwEAAAAAAAAFAAMAAAAAABgCAAAAAAAAAAAAAAAA8H9PIQAAAAAAAIUQAACn/v//lQAAAAAAAAAYAgAAAAAAAAAAAAAAAPh/FQcBAAAAAAC/EgAAAAAAAL8hAAAAAAAABQD4/wAAAAC/JgAAAAAAAL8XAAAAAAAAhRAAAJv+//+/CAAAAAAAAL9hAAAAAAAAhRAAAJj+//+/AQAAAAAAABgCAAD/////AAAAAP///39fKAAAAAAAABgDAAAAAAAAAAAAAAAA8H8tOBMAAAAAAF8hAAAAAAAALTERAAAAAABPgQAAAAAAALcAAAAAAAAAFQEPAAAAAAC/cQAAAAAAAIUQAACK/v//vwcAAAAAAAC/YQAAAAAAAIUQAACH/v//vwEAAAAAAAC/EgAAAAAAAF9yAAAAAAAAZQIJAP////8YAAAA/////wAAAAAAAAAAbRcDAAAAAAC3AAAAAAAAAB0XAQAAAAAAtwAAAAEAAABnAAAAIAAAAMcAAAAgAAAAlQAAAAAAAAAYAAAA/////wAAAAAAAAAAbXH6/wAAAAC3AAAAAAAAAB0X+P8AAAAABQD2/wAAAAC/EAAAAAAAAJUAAAAAAAAAvxAAAAAAAACVAAAAAAAAAL8QAAAAAAAAlQAAAAAAAAC/IAAAAAAAAA8QAAAAAAAAlQAAAAAAAAC/IAAAAAAAAC8QAAAAAAAAlQAAAAAAAAC/EAAAAAAAAB8gAAAAAAAAlQAAAAAAAAC3AAAAQAAAABUBKgAAAAAAvxIAAAAAAAB3AgAAAQAAAE8hAAAAAAAAvxIAAAAAAAB3AgAAAgAAAE8hAAAAAAAAvxIAAAAAAAB3AgAABAAAAE8hAAAAAAAAvxIAAAAAAAB3AgAACAAAAE8hAAAAAAAAvxIAAAAAAAB3AgAAEAAAAE8hAAAAAAAAvxIAAAAAAAB3AgAAIAAAAE8hAAAAAAAApwEAAP////8YAgAAVVVVVQAAAABVVVVVvxMAAAAAAAB3AwAAAQAAAF8jAAAAAAAAHzEAAAAAAAAYAgAAMzMzMwAAAAAzMzMzvxAAAAAAAABfIAAAAAAAAHcBAAACAAAAXyEAAAAAAAAPEAAAAAAAAL8BAAAAAAAAdwEAAAQAAAAPEAAAAAAAABgBAAAPDw8PAAAAAA8PDw9fEAAAAAAAABgBAAABAQEBAAAAAAEBAQEvEAAAAAAAAHcAAAA4AAAAlQAAAAAAAAC/EAAAAAAAAJUAAAAAAAAAvxAAAAAAAABnAAAAIAAAAHcAAAAgAAAAlQAAAAAAAAC/EAAAAAAAAGcAAAAgAAAAxwAAACAAAACVAAAAAAAAAL8kAAAAAAAAvxYAAAAAAAC/oQAAAAAAAAcBAADw////vzIAAAAAAAC3AwAAAAAAALcFAAAAAAAAhRAAADYCAAB5ofD/AAAAAHsWCAAAAAAAeaH4/wAAAAB7FgAAAAAAAJUAAAAAAAAAvzQAAAAAAACHBAAAAAAAAFcEAAA/AAAAeSUAAAAAAAB/RQAAAAAAAFcDAAA/AAAAeRQAAAAAAABvNAAAAAAAAE9FAAAAAAAAe1EAAAAAAAB5IQAAAAAAAG8xAAAAAAAAexIAAAAAAACVAAAAAAAAAL81AAAAAAAAZwUAACAAAADHBQAAIAAAALcEAABAAAAAbVQRAAAAAAC3BAAAAAAAALcAAACAAAAAbVABAAAAAAAFABwAAAAAAHkVAAAAAAAAvzAAAAAAAABXAAAAPwAAAL9WAAAAAAAAfwYAAAAAAACHAwAAAAAAAFcDAAA/AAAAbzUAAAAAAABPVgAAAAAAAHkjAAAAAAAATzYAAAAAAAB7YgAAAAAAAAUADwAAAAAAvzQAAAAAAACHBAAAAAAAAFcEAAA/AAAAVwMAAD8AAAB5JQAAAAAAAL9QAAAAAAAAfzAAAAAAAABvRQAAAAAAAE8FAAAAAAAAeRAAAAAAAABvQAAAAAAAAE8FAAAAAAAAe1IAAAAAAAB5FAAAAAAAAH80AAAAAAAAe0EAAAAAAACVAAAAAAAAAL8mAAAAAAAAhRAAAOr9//+/CQAAAAAAAL9hAAAAAAAAhRAAAOf9//+/BgAAAAAAAL+XAAAAAAAAdwcAADQAAAC3AQAA/wcAAIUQAACs////vwgAAAAAAABfeAAAAAAAAL9iAAAAAAAAr5IAAAAAAAAYAQAAAAAAAAAAAAAAAACAXxIAAAAAAAB7KrD/AAAAAL9nAAAAAAAAdwcAADQAAAC3AQAA/wcAAIUQAACg////X3AAAAAAAAB7Crj/AAAAABgBAAD/////AAAAAP//DwC/kgAAAAAAAF8SAAAAAAAAeyqo/wAAAAC/ZwAAAAAAAF8XAAAAAAAAe4qg/wAAAAC/gQAAAAAAALcCAAABAAAAhRAAAGH///+/CAAAAAAAALcBAAD+BwAAhRAAAJD///89CAgAAAAAAHmhuP8AAAAAtwIAAAEAAACFEAAAWv///78IAAAAAAAAtwEAAP4HAACFEAAAif///7cDAAAAAAAALYBDAAAAAAB5obj/AAAAABgCAAD/////AAAAAP///3+/kQAAAAAAAF8hAAAAAAAAGAMAAAAAAAAAAAAAAADwfy0xCQAAAAAAv2gAAAAAAABfKAAAAAAAAC04AQAAAAAABQAKAAAAAAAYAQAAAAAAAAAAAAAAAAgATxYAAAAAAAC/YQAAAAAAAAUAmgAAAAAAGAEAAAAAAAAAAAAAAAAIAE8ZAAAAAAAAv5EAAAAAAAAFAJUAAAAAABgCAAAAAAAAAAAAAAAA8H8dIQEAAAAAAAUABAAAAAAAVQgHAAAAAAAYAQAAAAAAAAAAAAAAAPh/BQCNAAAAAAAdKAEAAAAAAAUACAAAAAAAVQGDAAAAAAAFAPn/AAAAABgBAAAAAAAAAAAAAAAAAIBfFgAAAAAAAK+WAAAAAAAAv2EAAAAAAAAFAIMAAAAAABUBgQAAAAAAFQiAAAAAAAC3AwAAAAAAABgCAAAAAAAAAAAAAAAAEAAtEgEAAAAAAAUABwAAAAAAv6EAAAAAAAAHAQAA4P///3miqP8AAAAAhRAAAI79//95oej/AAAAAHsaqP8AAAAAYaPg/wAAAAAYAQAA/////wAAAAD//w8AeaK4/wAAAAAtGAkAAAAAAL+hAAAAAAAABwEAAND///+/cgAAAAAAAL82AAAAAAAAhRAAAIL9//9hodD/AAAAAA9hAAAAAAAAeafY/wAAAAC/EwAAAAAAAGcHAAALAAAAGAEAAAAAAAAAAAAAAAAAgE8XAAAAAAAAGAYAAAAAAAAAAAAAAAAQAHmiqP8AAAAAT2IAAAAAAAC/oQAAAAAAAAcBAADA////vzgAAAAAAAC/cwAAAAAAAIUQAAA/////eaHI/wAAAAB5p8D/AAAAAHt68P8AAAAAexr4/wAAAABfZwAAAAAAAHmhoP8AAAAAhRAAAC7///+/BgAAAAAAAA+GAAAAAAAAeaG4/wAAAACFEAAAKv///w8GAAAAAAAAVQcIAAAAAAC/oQAAAAAAAAcBAADw////v6IAAAAAAAAHAgAA+P///7cDAAABAAAAhRAAADn///8HBgAAAfz//wUAAQAAAAAABwYAAAL8//+/YQAAAAAAAGcBAAAgAAAAxwEAACAAAAB5p7D/AAAAAGUBDgD+BwAAtwIAAAEAAABtEhEAAAAAABgBAAD/////AAAAAP//DwB5ovD/AAAAAF8SAAAAAAAAeyrw/wAAAAC/YQAAAAAAAIUQAAAX////ZwAAADQAAAB5ofD/AAAAAE8BAAAAAAAAexrw/wAAAAAFABYAAAAAABgBAAAAAAAAAAAAAAAA8H9PFwAAAAAAAL9xAAAAAAAABQAtAAAAAAC/YQAAAAAAAIUQAAAL////twEAAAEAAAC/AgAAAAAAAIUQAADS/v//vwEAAAAAAACFEAAAAP///2cAAAAgAAAAxwAAACAAAABlAPT/PwAAAL+hAAAAAAAABwEAAPD///+/ogAAAAAAAAcCAAD4////vwMAAAAAAACFEAAAHP///3mh8P8AAAAAvxIAAAAAAABPcgAAAAAAAHsq8P8AAAAAeaP4/wAAAAAYBAAAAQAAAAAAAAAAAACALTQFAAAAAAAHAgAAAQAAAHsq8P8AAAAAvycAAAAAAAC/cQAAAAAAAAUAEAAAAAAAGAQAAAAAAAAAAAAAAAAAgL8nAAAAAAAAXUPd/wAAAABXAQAAAQAAAA8hAAAAAAAAexrw/wAAAAC/FwAAAAAAAAUABwAAAAAAGAEAAAAAAAAAAAAAAAAAgF8ZAAAAAAAAr2kAAAAAAAC/kQAAAAAAAAUAAQAAAAAAeaGw/wAAAACFEAAAE/3//5UAAAAAAAAAvxYAAAAAAAB3AQAAIAAAABgCAAAAAAAAAAAAAAAAMEVPIQAAAAAAABgCAAAAABAAAAAAAAAAMMWFEAAACQAAAGcGAAAgAAAAdwYAACAAAAAYAQAAAAAAAAAAAAAAADBDTxYAAAAAAAC/AQAAAAAAAL9iAAAAAAAAhRAAAAEAAACVAAAAAAAAAL8mAAAAAAAAvxcAAAAAAAC3AQAAQAAAAIUQAADF/v//ewrQ/wAAAAB7esD/AAAAAL9xAAAAAAAAhRAAAPf8//+/CQAAAAAAAL9hAAAAAAAAhRAAAPT8//+/CAAAAAAAABgHAAD/////AAAAAP///397msj/AAAAAF95AAAAAAAAv5EAAAAAAAC3AgAAAQAAAIUQAACE/v//e4rY/wAAAABfeAAAAAAAABgBAAD+////AAAAAP//738tEAYAAAAAAL+BAAAAAAAAtwIAAAEAAACFEAAAfP7//xgBAAD/////AAAAAP//738tASUAAAAAABgBAAAAAAAAAAAAAAAA8H8tGQcAAAAAAC0YAQAAAAAABQAKAAAAAAAYAQAAAAAAAAAAAAAAAAgATxgAAAAAAAC/gQAAAAAAAAUA2gAAAAAAGAEAAAAAAAAAAAAAAAAIAE8ZAAAAAAAAv5EAAAAAAAAFANUAAAAAABgBAAAAAAAAAAAAAAAA8H8dGQEAAAAAAAUADgAAAAAAeajA/wAAAAC/gQAAAAAAAIUQAADL/P//vwcAAAAAAAC/YQAAAAAAAIUQAADI/P//r3AAAAAAAAAYAQAAAAAAAAAAAAAAAACAv4YAAAAAAABdEMgAAAAAABgBAAAAAAAAAAAAAAAA+H8FAMMAAAAAAB0YxAAAAAAAFQnFAAAAAAB5psD/AAAAABUIwQAAAAAAeaHI/wAAAAC/FwAAAAAAAHmm2P8AAAAALZgBAAAAAAC/ZwAAAAAAAC2YAQAAAAAAvxYAAAAAAAC/YQAAAAAAAHcBAAA0AAAAVwEAAP8HAACFEAAAef7//78JAAAAAAAAv3EAAAAAAAB3AQAANAAAAFcBAAD/BwAAhRAAAHT+//+/eAAAAAAAAL8HAAAAAAAAGAIAAP////8AAAAA//8PAHtq2P8AAAAAXyYAAAAAAAC/kQAAAAAAAGcBAAAgAAAAdwEAACAAAABVAQgAAAAAAL+hAAAAAAAABwEAAPD///+/YgAAAAAAAIUQAACi/P//GAIAAP////8AAAAA//8PAHmm+P8AAAAAYanw/wAAAAB7msj/AAAAAL+JAAAAAAAAXykAAAAAAAC/cQAAAAAAAGcBAAAgAAAAdwEAACAAAABVAQYAAAAAAL+hAAAAAAAABwEAAOD///+/kgAAAAAAAIUQAACT/P//eano/wAAAABhp+D/AAAAAHmh2P8AAAAArxgAAAAAAAB7isD/AAAAAGcGAAADAAAAZwkAAAMAAAAYAQAAAAAAAAAAAAAAAIAATxkAAAAAAAB5ocj/AAAAAB9xAAAAAAAAhRAAAFD+//+/BwAAAAAAAL+YAAAAAAAAFQcWAAAAAAC3CAAAAQAAAHmh0P8AAAAAPRcTAAAAAAB5odD/AAAAAL9yAAAAAAAAhRAAABH+//+/AQAAAAAAAIUQAAA//v//VwAAAD8AAAC/kgAAAAAAAG8CAAAAAAAAtwEAAAEAAABVAgEAAAAAALcBAAAAAAAAhRAAAAD+//+/CAAAAAAAAL9xAAAAAAAAhRAAADX+//9XAAAAPwAAAH8JAAAAAAAAT4kAAAAAAAC/mAAAAAAAABgBAAAAAAAAAAAAAAAAgABPFgAAAAAAALcBAAAAAAAAeaLA/wAAAABtIQ8AAAAAAA9oAAAAAAAAGAEAAAAAAAAAAAAAAAAAAb+CAAAAAAAAXxIAAAAAAAB5p8j/AAAAABUCHAAAAAAAv4EAAAAAAABXAQAAAQAAAIUQAADp/f//dwgAAAEAAABPgAAAAAAAAAcHAAABAAAAvwgAAAAAAAAFABQAAAAAAL9hAAAAAAAAv4IAAAAAAACFEAAA6f3//78IAAAAAAAAeafI/wAAAAAVCFAAAAAAABgBAAAAAAAAAAAAAAAAgAAtgQEAAAAAAAUACgAAAAAAv4EAAAAAAACFEAAA4/3//78GAAAAAAAAGAEAAAAAAAAAAAAAAACAAIUQAADf/f//HwYAAAAAAAAfZwAAAAAAAFcGAAA/AAAAb2gAAAAAAAAYAgAAAAAAAAAAAAAAAACAeaHY/wAAAABfIQAAAAAAAL9yAAAAAAAAZwIAACAAAADHAgAAIAAAAGUCMQD+BwAAe3rI/wAAAAC/FwAAAAAAALcGAAABAAAAbSYBAAAAAAAFABkAAAAAALcBAAABAAAAeaLI/wAAAAAfIQAAAAAAAIUQAAD9/f//vwkAAAAAAAB5odD/AAAAAL+SAAAAAAAAhRAAAMP9//+/AQAAAAAAAIUQAADx/f//VwAAAD8AAAC/gQAAAAAAAG8BAAAAAAAAtwIAAAAAAAB7Ksj/AAAAAFUBAQAAAAAAtwYAAAAAAAC/YQAAAAAAAIUQAACw/f//vwYAAAAAAAC/kQAAAAAAAIUQAADl/f//VwAAAD8AAAB/CAAAAAAAAE9oAAAAAAAAv4kAAAAAAAB3CQAAAwAAABgBAAD/////AAAAAP//DwC/lgAAAAAAAF8WAAAAAAAAT3YAAAAAAAC/gQAAAAAAAIUQAADZ/f//vwcAAAAAAAB5ocj/AAAAAIUQAADc/f//ZwAAADQAAABPBgAAAAAAAFcHAAAHAAAAtwEAAAUAAAAtcQYAAAAAAAcGAAABAAAABQAHAAAAAAAYAgAAAAAAAAAAAAAAAPB/TyEAAAAAAAAFAAYAAAAAAFUHAgAEAAAAVwkAAAEAAAAPlgAAAAAAAL9hAAAAAAAABQABAAAAAAC3AQAAAAAAAIUQAAD++///vwYAAAAAAAC/YAAAAAAAAJUAAAAAAAAAVQj9/wAAAAB5ocD/AAAAAIUQAAD2+///vwcAAAAAAAC/YQAAAAAAAIUQAADz+///X3AAAAAAAAC/AQAAAAAAAAUA8/8AAAAAL0MAAAAAAAAvJQAAAAAAAA81AAAAAAAAvyAAAAAAAAB3AAAAIAAAAL9DAAAAAAAAdwMAACAAAAC/NgAAAAAAAC8GAAAAAAAAD2UAAAAAAABnBAAAIAAAAHcEAAAgAAAAv0YAAAAAAAAvBgAAAAAAAGcCAAAgAAAAdwIAACAAAAAvJAAAAAAAAL9AAAAAAAAAdwAAACAAAAAPYAAAAAAAAL8GAAAAAAAAdwYAACAAAAAPZQAAAAAAAC8jAAAAAAAAZwAAACAAAAB3AAAAIAAAAA8wAAAAAAAAvwIAAAAAAAB3AgAAIAAAAA8lAAAAAAAAe1EIAAAAAABnAAAAIAAAAGcEAAAgAAAAdwQAACAAAABPQAAAAAAAAHsBAAAAAAAAlQAAAAAAAAAAAAAAAAAAAGFsc2UgICAgU29tZSA8PSB0cnVlZW51bXdlZWtOb25lZW50aXR5IG5vdCBmb3VuZGZsb2F0aW5nIHBvaW50IGApIHdoZW4gc2xpY2luZyBgY29ubmVjdGlvbiByZXNldGFscmVhZHkgYm9ycm93ZWQAAAAAAAAAAAAAAAAAAAAAUHJvZ3JhbUVycm9yOjpJbnZhbGlkQWNjb3VudERhdGFpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICAoYnl0ZXMgLCBsaW5lOiAgY29sdW1uIGEgc3RyaW5nc2VxdWVuY2VuZXcgd2Vla3J1ZXVsbC9yb290Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NlcmRlX2pzb24tMS4wLjU5L3NyYy9kZS5yc3N0cnVjdCBRdWVyeSB3aXRoIDIgZWxlbWVudHNhY3RhbW91bnRUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5YWxyZWFkeSBtdXRhYmx5IGJvcnJvd2VkY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZWFjY291bnQgY3JlYXRlUXVlcnlhY3RhbW91bnRzdHJ1Y3QgUXVlcnkvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9zbGljZS9tb2QucnNhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgOiBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHNsaWNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseW1pc3NpbmcgZmllbGQgYGBpbnZhbGlkIGxlbmd0aCAsIGV4cGVjdGVkIGR1cGxpY2F0ZSBmaWVsZCBgAAAAAAAAAAAAAADwPwAAAAAAACRAAAAAAAAAWUAAAAAAAECPQAAAAAAAiMNAAAAAAABq+EAAAAAAgIQuQQAAAADQEmNBAAAAAITXl0EAAAAAZc3NQQAAACBfoAJCAAAA6HZIN0IAAACilBptQgAAQOWcMKJCAACQHsS81kIAADQm9WsMQwCA4Dd5w0FDAKDYhVc0dkMAyE5nbcGrQwA9kWDkWOFDQIy1eB2vFURQ7+LW5BpLRJLVTQbP8IBE9krhxwIttUS0ndl5Q3jqRJECKCwqiyBFNQMyt/StVEUChP7kcdmJRYESHy/nJ8BFIdfm+uAx9EXqjKA5WT4pRiSwCIjvjV9GF24FtbW4k0acyUYi46bIRgN82Oqb0P5Ggk3HcmFCM0fjIHnP+RJoRxtpV0O4F55HsaEWKtPO0kcdSpz0h4IHSKVcw/EpYz1I5xkaN/pdckhhoODEePWmSHnIGPbWstxITH3PWcbvEUmeXEPwt2tGScYzVOylBnxJXKC0syeEsUlzyKGgMeXlSY86ygh+XhtKmmR+xQ4bUUrA/d120mGFSjB9lRRHurpKPm7dbGy08ErOyRSIh+EkS0H8GWrpGVpLqT1Q4jFQkEsTTeRaPmTES1dgnfFNfflLbbgEbqHcL0xE88Lk5OljTBWw8x1e5JhMG5xwpXUdz0yRYWaHaXIDTfX5P+kDTzhNcviP48Ribk1H+zkOu/2iTRl6yNEpvddNn5g6RnSsDU5kn+SryItCTj3H3da6LndODDmVjGn6rE6nQ933gRziTpGU1HWioxZPtblJE4tMTE8RFA7s1q+BTxaZEafMG7ZPW//V0L+i60+Zv4Xit0UhUH8vJ9sll1VQX/vwUe/8ilAbnTaTFd7AUGJEBPiaFfVQe1UFtgFbKlFtVcMR4XhgUcgqNFYZl5RRejXBq9+8yVFswVjLCxYAUsfxLr6OGzRSOa66bXIiaVLHWSkJD2ufUh3YuWXpotNSJE4ov6OLCFOtYfKujK4+Uwx9V+0XLXNTT1yt6F34p1Njs9hidfbdUx5wx10JuhJUJUw5tYtoR1Qun4eirkJ9VH3DlCWtSbJUXPT5bhjc5lRzcbiKHpMcVehGsxbz21FVohhg3O9ShlXKHnjTq+e7VT8TK2TLcPFVDtg1Pf7MJVYSToPMPUBbVssQ0p8mCJFW/pTGRzBKxVY9OrhZvJz6VmYkE7j1oTBXgO0XJnPKZFfg6J3vD/2ZV4yxwvUpPtBX710zc7RNBFhrNQCQIWE5WMVCAPRpuW9YuymAOOLTo1gqNKDG2sjYWDVBSHgR+w5ZwSgt6+pcQ1nxcvilJTR4Wa2Pdg8vQa5ZzBmqab3o4lk/oBTE7KIXWk/IGfWni01aMh0w+Uh3glp+JHw3GxW3Wp4tWwVi2uxagvxYQ30IIlujOy+UnIpWW4wKO7lDLYxbl+bEU0qcwVs9ILboXAP2W02o4yI0hCtcMEnOlaAyYVx820G7SH+VXFtSEuoa38pceXNL0nDLAF1XUN4GTf40XW3klUjgPWpdxK5dLaxmoF11GrU4V4DUXRJh4gZtoAleq3xNJEQEQF7W22AtVQV0XswSuXiqBqlef1fnFlVI316vllAuNY0TX1u85HmCcEhfcutdGKOMfl8nszrv5RezX/FfCWvf3edf7bfLRVfVHWD0Up+LVqVSYLEnhy6sTodgnfEoOlcivWACl1mEdjXyYMP8byXUwiZh9PvLLolzXGF4fT+9NciRYdZcjyxDOsZhDDSz99PI+2GHANB6hF0xYqkAhJnltGVi1ADl/x4im2KEIO9fU/XQYqXo6jeoMgVjz6LlRVJ/OmPBha9rk49wYzJnm0Z4s6Rj/kBCWFbg2WOfaCn3NSwQZMbC83RDN0RkeLMwUhRFeWRW4LxmWZavZDYMNuD3veNkQ49D2HWtGGUUc1RO09hOZezH9BCER4Nl6PkxFWUZuGVheH5avh/uZT0Lj/jW0yJmDM6ytsyIV2aPgV/k/2qNZvmwu+7fYsJmOJ1q6pf79maGRAXlfbosZ9RKI6+O9GFniR3sWrJxlmfrJKfxHg7MZxN3CFfTiAFo15TKLAjrNWgNOv03ymVraEhE/mKeH6FoWtW9+4Vn1WixSq16Z8EKaa9OrKzguEBpWmLX1xjndGnxOs0N3yCqadZEoGiLVOBpDFbIQq5pFGqPa3rTGYRJanMGWUgg5X9qCKQ3LTTvs2oKjYU4AevoakzwpobBJR9rMFYo9Jh3U2u7azIxf1WIa6oGf/3ear5rKmRvXssC82s1PQs2fsMnbIIMjsNdtF1s0cc4mrqQkmzG+cZA6TTHbDe4+JAjAv1sI3ObOlYhMm3rT0LJq6lmbebjkrsWVJxtcM47NY600W0MworCsSEGbo9yLTMeqjtumWf831JKcW5/gfuX55ylbt9h+n0hBNtuLH287pTiEG92nGsqOhtFb5SDBrUIYnpvPRIkcUV9sG/MFm3Nlpzkb39cyIC8wxlwzzl90FUaUHBDiJxE6yCEcFSqwxUmKblw6ZQ0m29z73AR3QDBJagjcVYUQTEvklhxa1mR/bq2jnHj13reNDLDcdyNGRbC/vdxU/Gfm3L+LXLU9kOhB79icon0lInJbpdyqzH663tKzXILX3xzjU4Cc812W9Aw4jZzgVRyBL2abHPQdMcituChcwRSeavjWNZzhqZXlhzvC3QUyPbdcXVBdBh6dFXO0nV0npjR6oFHq3Rj/8IysQzhdDy/c3/dTxV1C69Q39SjSnVnbZILZaaAdcAId07+z7R18coU4v0D6nXW/kytfkIgdow+oFgeU1R2L07I7uVniXa7YXpq38G/dhV9jKIr2fN2Wpwvi3bPKHdwg/stVANfdyYyvZwUYpN3sH7sw5k6yHdcnuc0QEn+d/nCECHI7TJ4uPNUKTqpZ3ilMKqziJOdeGdeSnA1fNJ4AfZczEIbB3mCM3R/E+I8eTGgqC9MDXJ5PciSO5+QpnlNencKxzTceXCsimb8oBF6jFctgDsJRnpvrThgiot7emVsI3w2N7F6f0csGwSF5XpeWfchReYae9uXOjXrz1B70j2JAuYDhXtGjSuD30S6e0w4+7ELa/B7XwZ6ns6FJHz2hxhGQqdZfPpUz2uJCJB8OCrDxqsKxHzH9HO4Vg35fPjxkGasUC99O5cawGuSY30KPSGwBneYfUyMKVzIlM59sPeZOf0cA36cdQCIPOQ3fgOTAKpL3W1+4ltASk+qon7actAc41TXfpCPBOQbKg1/utmCblE6Qn8pkCPK5ch2fzN0rDwfe6x/oMjrhfPM4X8vcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9zbGljZS9tb2QucnNhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgOiBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHNsaWNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzAAAAAC9yb290Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NlcmRlX2pzb24tMS4wLjU5L3NyYy9yZWFkLnJzAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4P//////////////////////////////////8KCwwNDg////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9UcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AAAAAAAAAAAAAAAAAAAAL3Jvb3QvLmNhY2hlL3YwLjEyL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvc3RyL3BhdHRlcm4ucnNhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliYWxsb2Mvc3RyaW5nLnJzcmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXRyYWlsaW5nIGNoYXJhY3RlcnN0cmFpbGluZyBjb21tYWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZWtleSBtdXN0IGJlIGEgc3RyaW5nY29udHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdpbnZhbGlkIHVuaWNvZGUgY29kZSBwb2ludG51bWJlciBvdXQgb2YgcmFuZ2VpbnZhbGlkIG51bWJlcmludmFsaWQgZXNjYXBlZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBpZGVudGV4cGVjdGVkIGAsYCBvciBgfWBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYDpgRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZUVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0IGF0IGxpbmUgRXJyb3IoLCBjb2x1bW46IClpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgaW52YWxpZCB0eXBlOiBudWxsLCBleHBlY3RlZCAvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9zbGljZS9tb2QucnMvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVzdHJ1Y3QgdmFyaWFudHR1cGxlIHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR1bml0IHZhcmlhbnRtYXBuZXd0eXBlIHN0cnVjdE9wdGlvbiB2YWx1ZXVuaXQgdmFsdWVieXRlIGFycmF5c3RyaW5nIGNoYXJhY3RlciBgYGludGVnZXIgYGJvb2xlYW4gYGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliYWxsb2MvcmF3X3ZlYy5yc3VuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdGhlciBvcyBlcnJvcm9wZXJhdGlvbiBpbnRlcnJ1cHRlZHdyaXRlIHplcm90aW1lZCBvdXRpbnZhbGlkIGRhdGFpbnZhbGlkIGlucHV0IHBhcmFtZXRlcm9wZXJhdGlvbiB3b3VsZCBibG9ja2VudGl0eSBhbHJlYWR5IGV4aXN0c2Jyb2tlbiBwaXBlYWRkcmVzcyBub3QgYXZhaWxhYmxlYWRkcmVzcyBpbiB1c2Vub3QgY29ubmVjdGVkY29ubmVjdGlvbiBhYm9ydGVkY29ubmVjdGlvbiByZWZ1c2VkcGVybWlzc2lvbiBkZW5pZWQgKG9zIGVycm9yIClFcnJvcjogbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLCBvdXQgb2YgbWVtb3J5L3Jvb3QvLmNhY2hlL3YwLjEyL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzYXNzZXJ0aW9uIGZhaWxlZDogYChsZWZ0ID09IHJpZ2h0KWAKICBsZWZ0OiBgYCwKIHJpZ2h0OiBgYDogZGVzdGluYXRpb24gYW5kIHNvdXJjZSBzbGljZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Roc29wZXJhdGlvbiBzdWNjZXNzZnVsL3Jvb3QvLmNhY2hlL3YwLjEyL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmFsbG9jL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvdzB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkuLmNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvcm9vdC8uY2FjaGUvdjAuMTIvcnVzdC1icGYtc3lzcm9vdC9zcmMvbGliY29yZS9vcHRpb24ucnMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMEBAQEBAAAAAAAAAAAAAAAWy4uLl1ieXRlIGluZGV4ICBpcyBvdXQgb2YgYm91bmRzIG9mIGBgL3Jvb3QvLmNhY2hlL3YwLjEyL3J1c3QtYnBmLXN5c3Jvb3Qvc3JjL2xpYmNvcmUvc3RyL21vZC5yc2JlZ2luIDw9IGVuZCAoIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSApIG9mIGA6IC9yb290Ly5jYWNoZS92MC4xMi9ydXN0LWJwZi1zeXNyb290L3Ny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AgICAiIjJCUmAicCKAICAikqKwIsLS4vMAICMQICAjICAgICAgICAjMCAjQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjUCNgI3AgICAgICAgI4AjkCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjo7PAICAgI9AgI+P0BBQkNERUYCAgJHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkgCAgICAgICAgICAkkCAgICAjsCAAECAgICAwICAgIEAgUGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAAw6wEAPgAAAAAAAAAIBQAAFQAAAAAAAAAw6wEAPgAAAAAAAAA4BQAAFQAAAAAAAAAw6wEAPgAAAAAAAAA5BQAAFQAAAAAAAADoRAEACAAAAAAAAAAIAAAAAAAAAAAAAABAXwEAAAAAAFhfAQAAAAAAcF8BAAAAAAB66wEALQAAAAAAAAAAAAAAp+sBAAwAAAAAAAAAAAAAALPrAQABAAAAAAAAAAAAAAC06wEASQAAAAAAAABnAAAACQAAAAAAAAD96wEAKwAAAAAAAAAAAAAAKOwBADkAAAAAAAAAegEAABUAAAAAAAAAoGQBABgAAAAAAAAACAAAAAAAAAAAAAAAmFIBAAAAAACYXAEAAAAAAJheAQAAAAAAcOwBADoAAAAAAAAAVwQAACgAAAAAAAAAcOwBADoAAAAAAAAAYwQAABEAAAAAAAAAsJgBAAAAAAAAAAAAAQAAAAAAAAAAAAAAeBcBAAAAAAAAxAEAIAAAAAAAAAAAAAAAzewBABIAAAAAAAAAAAAAAN/sAQANAAAAAAAAAAAAAADs7AEAPAAAAAAAAAAjAAAABQAAAAAAAADf7AEADQAAAAAAAAAAAAAA7OwBADwAAAAAAAAAPgAAAAUAAAAAAAAAqJgBAAgAAAAAAAAACAAAAAAAAAAAAAAAUJcBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAQAAAA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CAAAAAAAAAAQfgAAAAAAAAgAAAAAAAAAWH4AAAAAAAAIAAAAAAAAAKB+AAAAAAAACAAAAAAAAAAYfwAAAAAAAAgAAAAAAAAAYH8AAAAAAAAIAAAAAAAAAFDxAQAAAAAACAAAAAAAAABg8QEAAAAAAAgAAAAAAAAAcPEBAAAAAAAIAAAAAAAAAIDxAQAAAAAACAAAAAAAAACQ8QEAAAAAAAgAAAAAAAAA4IEAAAAAAAAIAAAAAAAAAGCFAAAAAAAACAAAAAAAAACo8QEAAAAAAAgAAAAAAAAAwPEBAAAAAAAIAAAAAAAAAMjxAQAAAAAACAAAAAAAAADQ8QEAAAAAAAgAAAAAAAAAsIkAAAAAAAAIAAAAAAAAALiOAAAAAAAACAAAAAAAAAAYkAAAAAAAAAgAAAAAAAAAwJ8AAAAAAAAIAAAAAAAAAFChAAAAAAAACAAAAAAAAADAowAAAAAAAAgAAAAAAAAA2PEBAAAAAAAIAAAAAAAAAPDxAQAAAAAACAAAAAAAAAAI8gEAAAAAAAgAAAAAAAAAwLsAAAAAAAAIAAAAAAAAAKi8AAAAAAAACAAAAAAAAAAg8gEAAAAAAAgAAAAAAAAAMPIBAAAAAAAIAAAAAAAAAEjyAQAAAAAACAAAAAAAAABY8gEAAAAAAAgAAAAAAAAAaMQAAAAAAAAIAAAAAAAAAJjEAAAAAAAACAAAAAAAAACwxAAAAAAAAAgAAAAAAAAA4MQAAAAAAAAIAAAAAAAAAIjGAAAAAAAACAAAAAAAAADIxgAAAAAAAAgAAAAAAAAACMcAAAAAAAAIAAAAAAAAAEDHAAAAAAAACAAAAAAAAAB4xwAAAAAAAAgAAAAAAAAAsMcAAAAAAAAIAAAAAAAAAOjHAAAAAAAACAAAAAAAAAA4yAAAAAAAAAgAAAAAAAAAYMgAAAAAAAAIAAAAAAAAAIjIAAAAAAAACAAAAAAAAACwyAAAAAAAAAgAAAAAAAAA2MgAAAAAAAAIAAAAAAAAAADJAAAAAAAACAAAAAAAAAAoyQAAAAAAAAgAAAAAAAAAUMkAAAAAAAAIAAAAAAAAAHjJAAAAAAAACAAAAAAAAACgyQAAAAAAAAgAAAAAAAAAyMkAAAAAAAAIAAAAAAAAAPDJAAAAAAAACAAAAAAAAAAYygAAAAAAAAgAAAAAAAAAoMoAAAAAAAAIAAAAAAAAAOjKAAAAAAAACAAAAAAAAABgywAAAAAAAAgAAAAAAAAAeMsAAAAAAAAIAAAAAAAAAAjMAAAAAAAACAAAAAAAAABgzAAAAAAAAAgAAAAAAAAAqMwAAAAAAAAIAAAAAAAAADjNAAAAAAAACAAAAAAAAAAYzgAAAAAAAAgAAAAAAAAAYM4AAAAAAAAIAAAAAAAAANjOAAAAAAAACAAAAAAAAADwzgAAAAAAAAgAAAAAAAAAuM8AAAAAAAAIAAAAAAAAAADQAAAAAAAACAAAAAAAAABo0AAAAAAAAAgAAAAAAAAAyNAAAAAAAAAIAAAAAAAAACDRAAAAAAAACAAAAAAAAADA0QAAAAAAAAgAAAAAAAAAaNgAAAAAAAAIAAAAAAAAAIDfAAAAAAAACAAAAAAAAABw8gEAAAAAAAgAAAAAAAAAgPIBAAAAAAAIAAAAAAAAAJjyAQAAAAAACAAAAAAAAACw8gEAAAAAAAgAAAAAAAAAyPIBAAAAAAAIAAAAAAAAAODyAQAAAAAACAAAAAAAAAD48gEAAAAAAAgAAAAAAAAAAPMBAAAAAAAIAAAAAAAAABDzAQAAAAAACAAAAAAAAAAo8wEAAAAAAAgAAAAAAAAAOPMBAAAAAAAIAAAAAAAAAEjzAQAAAAAACAAAAAAAAABY8wEAAAAAAAgAAAAAAAAAaPMBAAAAAAAIAAAAAAAAAHjzAQAAAAAACAAAAAAAAACI8wEAAAAAAAgAAAAAAAAAeOMAAAAAAAAIAAAAAAAAAJjzAQAAAAAACAAAAAAAAAAY6wAAAAAAAAgAAAAAAAAAsPMBAAAAAAAIAAAAAAAAAMDzAQAAAAAACAAAAAAAAAD47wAAAAAAAAgAAAAAAAAAWPAAAAAAAAAIAAAAAAAAAODwAAAAAAAACAAAAAAAAABQ8QAAAAAAAAgAAAAAAAAAqPEAAAAAAAAIAAAAAAAAACjyAAAAAAAACAAAAAAAAACQ8gAAAAAAAAgAAAAAAAAAIPMAAAAAAAAIAAAAAAAAAIDzAAAAAAAACAAAAAAAAAD48wAAAAAAAAgAAAAAAAAASPQAAAAAAAAIAAAAAAAAAKj0AAAAAAAACAAAAAAAAAAY9QAAAAAAAAgAAAAAAAAAcPUAAAAAAAAIAAAAAAAAAMj1AAAAAAAACAAAAAAAAAAg9gAAAAAAAAgAAAAAAAAA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CAAAAAAAAADY9gEAAAAAAAgAAAAAAAAA6PYBAAAAAAAIAAAAAAAAAAD3AQAAAAAACAAAAAAAAAAQ9wEAAAAAAAgAAAAAAAAAIPcBAAAAAAAIAAAAAAAAADD3AQAAAAAACAAAAAAAAABA9wEAAAAAAAgAAAAAAAAAUPcBAAAAAAAIAAAAAAAAAJg1AQAAAAAACAAAAAAAAADgNQEAAAAAAAgAAAAAAAAASDYBAAAAAAAIAAAAAAAAAJA2AQAAAAAACAAAAAAAAADgNgEAAAAAAAgAAAAAAAAAKDcBAAAAAAAIAAAAAAAAAJA3AQAAAAAACAAAAAAAAADYNwEAAAAAAAgAAAAAAAAAKDgBAAAAAAAIAAAAAAAAAHA4AQAAAAAACAAAAAAAAADYOAEAAAAAAAgAAAAAAAAAIDkBAAAAAAAIAAAAAAAAAGj3AQAAAAAACAAAAAAAAAB49wEAAAAAAAgAAAAAAAAAiPcBAAAAAAAIAAAAAAAAAKD3AQAAAAAACAAAAAAAAACw9wEAAAAAAAgAAAAAAAAAwPcBAAAAAAAIAAAAAAAAANj3AQAAAAAACAAAAAAAAADo9wEAAAAAAAgAAAAAAAAA+PcBAAAAAAAIAAAAAAAAAHA7AQAAAAAACAAAAAAAAACYPQEAAAAAAAgAAAAAAAAAyD0BAAAAAAAIAAAAAAAAAOA9AQAAAAAACAAAAAAAAAAQPgEAAAAAAAgAAAAAAAAAKD4BAAAAAAAIAAAAAAAAANBBAQAAAAAACAAAAAAAAACQQgEAAAAAAAgAAAAAAAAA0EIBAAAAAAAIAAAAAAAAAOhCAQAAAAAACAAAAAAAAAAAQwEAAAAAAAgAAAAAAAAAQEMBAAAAAAAIAAAAAAAAAFhDAQAAAAAACAAAAAAAAADIRAEAAAAAAAgAAAAAAAAAEPgBAAAAAAAIAAAAAAAAACD4AQAAAAAACAAAAAAAAAA4+AEAAAAAAAgAAAAAAAAASPgBAAAAAAAIAAAAAAAAAGD4AQAAAAAACAAAAAAAAAB4+AEAAAAAAAgAAAAAAAAAkPgBAAAAAAAIAAAAAAAAAKj4AQAAAAAACAAAAAAAAADA+AEAAAAAAAgAAAAAAAAA2PkBAAAAAAAIAAAAAAAAAOj5AQAAAAAACAAAAAAAAAD4+QEAAAAAAAgAAAAAAAAAOFEBAAAAAAAIAAAA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AAAAAMgpAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAANwAAAAEAAAACAAAAAAAAACjtAQAAAAAAKO0BAAAAAACcAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAEEAAAAGAAAAAwAAAAAAAADI7QEAAAAAAMjtAQAAAAAA0AAAAAAAAAAHAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAPAAAAAQAAAAMAAAAAAAAAmO4BAAAAAACY7gEAAAAAAEgSAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAJQAAAAsAAAACAAAAAAAAAOAAAgAAAAAA4AACAAAAAACQAAAAAAAAAAcAAAABAAAACAAAAAAAAAAYAAAAAAAAAAcAAAADAAAAAgAAAAAAAABwAQIAAAAAAHABAgAAAAAANgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAtAAAA9v//bwIAAAAAAAAAqAECAAAAAACoAQIAAAAAACAAAAAAAAAABgAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAHAAAAAkAAAACAAAAAAAAAMgBAgAAAAAAyAECAAAAAADwJAAAAAAAAAYAAAAAAAAACAAAAAAAAAAQAAAAAAAAADEAAAAFAAAAAgAAAAAAAAC4JgIAAAAAALgmAgAAAAAAOAAAAAAAAAAGAAAAAAAAAAQAAAAAAAAABAAAAAAAAABKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAADwJgIAAAAAAGIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA", + "base64" + ], + "owner": "BPFLoader1111111111111111111111111111111111", + "executable": true, + "rentEpoch": 18446744073709551615, + "space": 141912 + } +} diff --git a/tests/v2-integration/counter/scripts/accounts/protocol-fees-vault.json b/tests/v2-integration/counter/scripts/accounts/protocol-fees-vault.json new file mode 100644 index 00000000..f9ac64a7 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/protocol-fees-vault.json @@ -0,0 +1,14 @@ +{ + "pubkey": "7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg", + "account": { + "lamports": 20000000000, + "data": [ + "", + "base64" + ], + "owner": "DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 0 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/accounts/validator-authority.json b/tests/v2-integration/counter/scripts/accounts/validator-authority.json new file mode 100644 index 00000000..72b093e1 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/validator-authority.json @@ -0,0 +1,14 @@ +{ + "pubkey": "mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev", + "account": { + "lamports": 20000000000, + "data": [ + "", + "base64" + ], + "owner": "11111111111111111111111111111111", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 0 + } +} diff --git a/tests/v2-integration/counter/scripts/accounts/validator-fees-vault.json b/tests/v2-integration/counter/scripts/accounts/validator-fees-vault.json new file mode 100644 index 00000000..1257f523 --- /dev/null +++ b/tests/v2-integration/counter/scripts/accounts/validator-fees-vault.json @@ -0,0 +1,14 @@ +{ + "pubkey": "EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX", + "account": { + "lamports": 20000000000, + "data": [ + "", + "base64" + ], + "owner": "DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 0 + } +} \ No newline at end of file diff --git a/tests/v2-integration/counter/scripts/run-magicblock b/tests/v2-integration/counter/scripts/run-magicblock index b0ec69f4..b001b65a 100755 --- a/tests/v2-integration/counter/scripts/run-magicblock +++ b/tests/v2-integration/counter/scripts/run-magicblock @@ -8,6 +8,6 @@ solana airdrop 20 tEsT3eV6RFCWs1BZ7AXTzasHqTtMnMLCB2tjQ42TDXD # RUST_LOG=info ephemeral-validator --accounts-lifecycle ephemeral --rpc-port 7799 --remote-url "http://localhost:8899" -RUST_LOG=info ../magicblock-validator/target/release/magicblock-validator --lifecycle ephemeral --listen 0.0.0.0:7799 --remotes "http://localhost:8899" +RUST_LOG=info ../../../../../magicblock-validator/target/release/magicblock-validator --lifecycle ephemeral --listen 0.0.0.0:7799 --remotes "http://localhost:8899" diff --git a/tests/v2-integration/counter/scripts/run-validator b/tests/v2-integration/counter/scripts/run-validator index 4c1c5145..9d883ca0 100755 --- a/tests/v2-integration/counter/scripts/run-validator +++ b/tests/v2-integration/counter/scripts/run-validator @@ -6,13 +6,24 @@ rm -rf ./test-ledger #cargo build-sbf #cargo build-sbf --features logging unit_test_config log-cost +# solana-test-validator \ +# --reset \ +# --rpc-port 8899 \ +# --bpf-program DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh ../../../target/deploy/dlp.so \ +# --bpf-program 8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW ./target/deploy/counter.so \ +# --clone mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev \ +# --clone EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX \ +# --clone 7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg \ +# --url "https://api.devnet.solana.com" + solana-test-validator \ - --reset \ --rpc-port 8899 \ - --bpf-program DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh ../../../target/deploy/dlp.so \ - --bpf-program 8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW ./target/deploy/counter.so \ - #--clone mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev \ - #--clone EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX \ - #--clone 7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg \ - #--url "https://api.devnet.solana.com" + -r \ + --account mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev ./accounts/validator-authority.json \ + --account EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX ./accounts/validator-fees-vault.json \ + --account 7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg ./accounts/protocol-fees-vault.json \ + --account LUzidNSiPNjYNkxZcUm5hYHwnWPwsUfh2US1cpWwaBm ./accounts/luzid-authority.json \ + --limit-ledger-size 1000000 \ + --bpf-program DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh ../../../../target/deploy/dlp.so \ + --bpf-program 8Aw8uKuJL2Yhr7nNCYjKAtKAajyoRicCbipR1kT3qEmW ../target/deploy/counter.so \ diff --git a/tests/v2-integration/counter/tests/counter.test.ts b/tests/v2-integration/counter/tests/counter.test.ts index 0914e2ac..53b3e952 100644 --- a/tests/v2-integration/counter/tests/counter.test.ts +++ b/tests/v2-integration/counter/tests/counter.test.ts @@ -1,18 +1,47 @@ import * as anchor from "@coral-xyz/anchor"; import { Program } from "@coral-xyz/anchor"; +import { PublicKey, Keypair } from "@solana/web3.js"; import { Counter } from "../target/types/counter"; +import { sol, wait } from "../utils"; describe("counter", () => { // Configure the client to use the local cluster. anchor.setProvider(anchor.AnchorProvider.env()); const program = anchor.workspace.counter as Program; + const connection = program.provider.connection; - it("Is initialized!", async () => { + async function newUser(solAmount: number = 5) { + const user = Keypair.generate(); + console.log("user: ", user.publicKey.toBase58()); + await connection.requestAirdrop(user.publicKey, sol(solAmount)); + await wait(1000); + return user; + } + + async function printLogs(sig: string, waitMs: number = 100) { + await wait(waitMs); + const logs = ( + await connection.getTransaction(sig, { + commitment: "confirmed", + maxSupportedTransactionVersion: 0, + }) + )?.meta?.logMessages; + console.log(`logs (${sig}): `, logs); + } + + it("ensures CommitFinalizeInline consumes less than 100 CU", async () => { console.log("programId: ", program.programId); - console.log("env: ", program.provider.connection.rpcEndpoint); - // Add your test here. - const tx = await program.methods.initialize().rpc(); - console.log("Your transaction signature", tx); + console.log("env: ", connection.rpcEndpoint); + + const user = await newUser(); + + const tx = await program.methods + .initialize() + .accounts({ user: user.publicKey }) + .signers([user]) + .rpc(); + + await printLogs(tx); }); }); diff --git a/tests/v2-integration/counter/utils.ts b/tests/v2-integration/counter/utils.ts index 1c33ec6e..9ba5af1f 100644 --- a/tests/v2-integration/counter/utils.ts +++ b/tests/v2-integration/counter/utils.ts @@ -30,6 +30,10 @@ export function wait(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } +export function sol(amount: number) { + return amount * 10 ** 9; +} + // returns epoch seconds. export function now_since_epoch(): bigint { return BigInt(Math.floor(Date.now() / 1000));