From a249cdebc8f76fb55df3da00cf8aeb5743e625eb Mon Sep 17 00:00:00 2001 From: Mykhailo Kremniov Date: Thu, 28 May 2026 11:16:38 +0300 Subject: [PATCH 1/3] Reduce app stack usage by boxing large objects --- .gitignore | 3 ++ Cargo.lock | 4 +- Cargo.toml | 2 +- messages/Cargo.toml | 4 +- messages/src/lib.rs | 8 ++-- src/handlers/sign_tx/mod.rs | 51 +++++++++++------------ src/handlers/sign_tx/summary_collector.rs | 2 +- src/main.rs | 12 ++---- 8 files changed, 42 insertions(+), 44 deletions(-) diff --git a/.gitignore b/.gitignore index 814b669..246e261 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ __pycache__/ ledger/ # Build directory build/ + +# VSCode +.vscode/ diff --git a/Cargo.lock b/Cargo.lock index f6331dd..147b2fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -628,9 +628,9 @@ dependencies = [ [[package]] name = "ledger_secure_sdk_sys" -version = "1.15.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f18ccb022d22741651f4a13bb417e2e5f4f2d68b832409b80bdc3726e76b1bd9" +checksum = "58d50b8764859daf1b5176c5aad8ccc989494c16b08fa266e22c7907e60956e9" dependencies = [ "bindgen", "cc", diff --git a/Cargo.toml b/Cargo.toml index 2c026a3..0673ad8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] messages = { path = "./messages" } ledger_device_sdk = "1.34.0" -ledger_secure_sdk_sys = "1.15.0" +ledger_secure_sdk_sys = "1.16.1" hex = { version = "0.4.3", default-features = false, features = ["alloc"] } bech32 = { version = "0.11", default-features = false, features = ["alloc"] } chrono = { version = "0.4", default-features = false, features = ["alloc"] } diff --git a/messages/Cargo.toml b/messages/Cargo.toml index aed18f0..dcceb54 100644 --- a/messages/Cargo.toml +++ b/messages/Cargo.toml @@ -10,9 +10,11 @@ edition = "2024" # # Fix reference: https://github.com/paritytech/parity-scale-codec/pull/751 # This fix should be included in releases after version 3.7.5. +# Note: normally we would enable the "chain-error" feature of parity-scale-codec to make decode errors +# more informative. But in the Ledger app we never examine or even print those errors, so enabling this +# feature would only increase the size of the binary and make the app use more stack during decoding. parity-scale-codec = { git = "https://github.com/paritytech/parity-scale-codec.git", rev = "5021525697edc0661591ebc71392c48d950a10b0", default-features = false, features = [ "derive", - "chain-error", ] } num_enum = { version = "0.7.5", default-features = false } diff --git a/messages/src/lib.rs b/messages/src/lib.rs index c15e47f..0aa0f8b 100644 --- a/messages/src/lib.rs +++ b/messages/src/lib.rs @@ -20,7 +20,7 @@ // Required for using String, Vec, format!... extern crate alloc; -use alloc::vec::Vec; +use alloc::{boxed::Box, vec::Vec}; use core::iter::ExactSizeIterator; use derive_more::Display; @@ -95,9 +95,9 @@ pub struct SignMessageReq { #[derive(Encode, Decode)] pub enum SignTxReq { - Input(TxInputReq), - InputCommitment(mlcp::SighashInputCommitment), - Output(TxOutputReq), + Input(Box), + InputCommitment(Box), + Output(Box), NextSignature, } diff --git a/src/handlers/sign_tx/mod.rs b/src/handlers/sign_tx/mod.rs index 11ea711..72adf3e 100644 --- a/src/handlers/sign_tx/mod.rs +++ b/src/handlers/sign_tx/mod.rs @@ -15,10 +15,7 @@ * limitations under the License. *****************************************************************************/ -use alloc::{ - vec::Vec, - boxed::Box, -}; +use alloc::{boxed::Box, vec::Vec}; use crate::{ app_ui::sign::{ @@ -124,7 +121,7 @@ pub struct TxParsingInputCommitmentsContext { impl TxParsingInputCommitmentsContext { fn advance_next_input_additional_info_step( - mut self, + mut self: Box, review: &NbglStreamingReview, ) -> Result { let finished_with_inputs = self.num_inputs_parsed >= (self.metadata.num_inputs - 1); @@ -153,7 +150,7 @@ impl TxParsingInputCommitmentsContext { self.tx_hasher .update(&encode_as_compact(self.metadata.num_outputs)) .map_err(|_| StatusWord::TxHashFail)?; - let new_context = TxParsingContext::ParsingOutputs(TxParsingOutputsContext { + let new_context = TxParsingContext::ParsingOutputs(Box::new(TxParsingOutputsContext { metadata: self.metadata, tx_hasher: self.tx_hasher, @@ -164,7 +161,7 @@ impl TxParsingInputCommitmentsContext { spinner: self.spinner, num_outputs_parsed: 0, - }); + })); Ok(new_context) } else { self.num_inputs_parsed += 1; @@ -174,7 +171,7 @@ impl TxParsingInputCommitmentsContext { } impl TxParsingInputsContext { - fn advance_next_input_step(mut self) -> Result { + fn advance_next_input_step(mut self: Box) -> Result { self.num_inputs_parsed += 1; let finished_with_inputs = self.num_inputs_parsed >= self.metadata.num_inputs; @@ -193,7 +190,7 @@ impl TxParsingInputsContext { .finalize(&mut input_commitments_hash) .map_err(|_| StatusWord::TxHashFail)?; - Ok(TxParsingContext::ParsingInputCommitments( + Ok(TxParsingContext::ParsingInputCommitments(Box::new( TxParsingInputCommitmentsContext { metadata: self.metadata, tx_hasher: self.tx_hasher, @@ -204,7 +201,7 @@ impl TxParsingInputsContext { spinner: self.spinner, num_inputs_parsed: 0, }, - )) + ))) } else { Ok(TxParsingContext::ParsingInputs(self)) } @@ -234,7 +231,7 @@ impl TxParsingOutputsContext { } fn advance_next_output_state( - mut self, + mut self: Box, review: &NbglStreamingReview, ) -> Result { if self.num_outputs_parsed < (self.metadata.num_outputs - 1) { @@ -250,13 +247,13 @@ impl TxParsingOutputsContext { let tx_hash = mintlayer_hash(&message_hash[0..32])?; if ui_approve_streaming_review(review, &self)? { - Ok(TxParsingContext::Signing(TxSigningContext { + Ok(TxParsingContext::Signing(Box::new(TxSigningContext { metadata: self.metadata, inputs: self.inputs, spinner: self.spinner, num_inputs_signed: 0, tx_hash, - })) + }))) } else { Err(StatusWord::Deny) } @@ -277,7 +274,7 @@ pub struct TxSigningContext { impl TxSigningContext { fn compute_signature_and_append( - mut self, + mut self: Box, ) -> Result<(TxInputSignatureResponse, TxParsingContext), StatusWord> { let address = self .inputs @@ -315,10 +312,10 @@ impl TxSigningContext { } pub enum TxParsingContext { - ParsingInputs(TxParsingInputsContext), - ParsingInputCommitments(TxParsingInputCommitmentsContext), - ParsingOutputs(TxParsingOutputsContext), - Signing(TxSigningContext), + ParsingInputs(Box), + ParsingInputCommitments(Box), + ParsingOutputs(Box), + Signing(Box), Finished, } @@ -349,7 +346,7 @@ impl TxParsingContext { .update(&num_inputs.to_le_bytes()) .map_err(|_| StatusWord::TxHashFail)?; - Ok(Self::ParsingInputs(TxParsingInputsContext { + Ok(Self::ParsingInputs(Box::new(TxParsingInputsContext { metadata: TxMetadata { coin: coin.into(), num_inputs, @@ -361,7 +358,7 @@ impl TxParsingContext { num_inputs_parsed: 0, input_commitments_hasher: Blake2b_512::new(), inputs: Vec::new(), - })) + }))) } /// Shows a spinner while processing the inputs and input commitments if there are more than a few @@ -399,12 +396,12 @@ pub fn setup_sign_tx(req: TxMetadataReq) -> Result { tx_ctx.show_spinner(); - Ok(DataContext::TxContext(Box::new(tx_ctx), ui_new_streaming_review())) + Ok(DataContext::TxContext(tx_ctx, ui_new_streaming_review())) } fn handle_input_req( - req: TxInputReq, - mut ctx: TxParsingInputsContext, + req: Box, + mut ctx: Box, ) -> Result { let num_inputs_parsed = ctx.num_inputs_parsed; let compressed_inputs = req @@ -423,8 +420,8 @@ fn handle_input_req( } fn handle_input_commitment_req( - req: SighashInputCommitment, - mut ctx: TxParsingInputCommitmentsContext, + req: Box, + mut ctx: Box, review: &NbglStreamingReview, ) -> Result { update_hash(&req, &mut ctx.input_commitments_hasher)?; @@ -433,8 +430,8 @@ fn handle_input_commitment_req( } fn handle_output_req( - req: TxOutputReq, - mut ctx: TxParsingOutputsContext, + req: Box, + mut ctx: Box, review: &NbglStreamingReview, ) -> Result { if ui_streaming_review_show_output(review, &req.out, ctx.metadata.coin)? { diff --git a/src/handlers/sign_tx/summary_collector.rs b/src/handlers/sign_tx/summary_collector.rs index d00826a..d6a449c 100644 --- a/src/handlers/sign_tx/summary_collector.rs +++ b/src/handlers/sign_tx/summary_collector.rs @@ -216,7 +216,7 @@ impl TxSummaryCollector { self.increase_input_totals(CoinOrTokenId::Coin, amount)?; } } - }, + } TxInputWithAdditionalInfo::AccountCommand(_, cmd) => { self.input_command = Some(InputCommand::AccountCommand(cmd.clone())); match cmd { diff --git a/src/main.rs b/src/main.rs index 4d85a09..20b6379 100644 --- a/src/main.rs +++ b/src/main.rs @@ -36,10 +36,7 @@ mod errors; // Required for using String, Vec, format!... extern crate alloc; -use alloc::{ - vec::Vec, - boxed::Box -}; +use alloc::vec::Vec; use ledger_device_sdk::{ io::{ApduHeader, Comm, Reply}, @@ -94,7 +91,6 @@ impl Default for ApduTransport { } impl ApduTransport { - /// Reads the next APDU from `comm`. /// /// - If `P2 == P2_MORE`, it accumulates the data and returns `Ok(None)`. @@ -213,7 +209,7 @@ fn show_status_and_home_if_needed(cmd: &Command, ctx: &mut AppContext, status: & } pub enum DataContext { - TxContext(Box, NbglStreamingReview), + TxContext(TxParsingContext, NbglStreamingReview), SignMessageContext(SignMessageContext), } @@ -312,9 +308,9 @@ fn handle_command(cmd: &Command, ctx: &mut AppContext) -> Result { - ctx.data_context = Some(DataContext::TxContext(Box::new(new_ctx), review)); + ctx.data_context = Some(DataContext::TxContext(new_ctx, review)); Ok(response) } Err(sw) => { From ab9d85873c7d5b0f3d11a086a5234279d5001405 Mon Sep 17 00:00:00 2001 From: Mykhailo Kremniov Date: Thu, 28 May 2026 11:17:23 +0300 Subject: [PATCH 2/3] Add a doc file about memory and stack usage --- README.md | 4 ++ docs/memory_usage.md | 94 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 docs/memory_usage.md diff --git a/README.md b/README.md index dadff25..326d124 100644 --- a/README.md +++ b/README.md @@ -143,3 +143,7 @@ The following workflows are executed in [GitHub Actions](https://github.com/feat - Various lint checks : - Source code lint checks with `cargo fmt` - Python functional test code lint checks with `pylint` and `mypy` + +## Additional documentation + +For development guidelines related to the app's memory usage see [docs/memory_usage.md](docs/memory_usage.md). diff --git a/docs/memory_usage.md b/docs/memory_usage.md new file mode 100644 index 0000000..71a8fba --- /dev/null +++ b/docs/memory_usage.md @@ -0,0 +1,94 @@ +# Memory usage + +## Device memory size + +Judging by `.ld` files in [the Ledger Rust SDK](https://github.com/LedgerHQ/ledger-device-rust-sdk/tree/cad196841dbd72c037cfa01bec81a4a3ae57a04e/ledger_secure_sdk_sys/devices), +the amount of SRAM each model has is: +| Device | SRAM | +| ----------------- | ---- | +| apex_p, nanosplus | 40KB | +| flex, stax | 36KB | +| nanox | 28KB | + +The first part of the RAM will be occupied by the app's globals (one of which will be the heap used by the Rust code) and the rest is stack. + +The `HEAP_SIZE` variable in `.cargo/config.toml` specifies the size of the Rust heap (which is just [a static array under the hood](https://github.com/LedgerHQ/ledger-device-rust-sdk/blob/cad196841dbd72c037cfa01bec81a4a3ae57a04e/ledger_secure_sdk_sys/src/lib.rs#L64)). + +I.e. the bigger `HEAP_SIZE` is, the less is the stack. And with the `HEAP_SIZE` of 16KB, we'll have less than 12KB of stack at nanox. + +## Reducing app stack usage + +- Function's parameters and the return value consume stack space (unless the object is small enough to be put into a register). +- Moving an object around inside the function body may increase stack consumption as well. + +So, +- Box large types if you need to pass/return them by value. +- Avoid unboxing boxed large objects when passing them by value. E.g. even if a function only needs `LargeObj`, + pass `Box` to it anyway (which would be discouraged by the "normal" best practices), because passing it + unboxed would increase the stack usage.\ + This includes the case when a member function consumes `self` - declare it as `self: Box` instead. +- `sizeof` of 200 bytes is probably large enough. E.g. in the past boxing certain objects of roughly this size + decreased stack usage by roughly 1.3KB (which is more than 10% of all stack space available on nanox). + +### Determining the current stack usage of the app + +Build the app with `emit-stack-sizes`: +``` +RUSTFLAGS="-Z emit-stack-sizes" cargo ledger build nanox +``` +After that you can use `llvm-readobj` to obtain sizes of stack frames of each function: +``` +llvm-readobj --stack-sizes --demangle target/nanox/release/mintlayer-app +``` + +You can also force `llvm-readobj` to emit json and use `jq` to sort the output by the stack size. E.g. the following +will print 20 functions with the biggest stack frame size: +``` +llvm-readobj --stack-sizes --demangle --elf-output-style=JSON target/nanox/release/mintlayer-app | jq -r '.[].StackSizes | sort_by(.Entry.Size) | reverse | .[:20][] | .Entry | "\(.Size)\t\(.Functions | join(", "))"' +``` + +### Determining the actual available stack + +At least in the current version of the SDK, the linker script emits symbols that +can be used to determine the actual stack size, e.g. via `llvm-readelf`: +``` +llvm-readelf -s target/nanox/release/mintlayer-app | rg '_stack|_estack' +``` +Example output: +``` +1581: da7a425c 0 NOTYPE GLOBAL DEFAULT 6 app_stack_canary +1624: da7a7000 0 NOTYPE GLOBAL DEFAULT 6 _estack +1697: da7a4260 0 NOTYPE GLOBAL DEFAULT 6 _stack +``` +Here `_estack` is the end of the stack area, `_stack` is the beginning of it and `app_stack_canary` is a 4-byte marker +placed just below `_stack` and used to detect stack overflows. The difference between `_estack` and `_stack` will be +the stack size, in this case it's da7a7000-da7a4260=2DA0 (11680 in decimal). + +### Other notes + +This code: +``` +fn foo(x: &X) { + match x { + X::A => { /*do stuff*/ }, + X::B => { /*do other stuff*/ }, + } +} +``` +may use more stack than: +``` +fn foo(x: &X) { + match x { + X::A => stuff(), + X::B => other_stuff(), + } +} + +#[inline(never)] fn stuff() { /*do stuff*/ } +#[inline(never)] fn other_stuff() { /*do other stuff*/ } +``` +I.e. it seems that LLVM cannot always reuse stack slots between different branches of the `match`, and with bigger enums +and bigger stack usage in each branch the overhead becomes bigger as well. So, splitting a large `match` into separate +non-inlinable functions may be a way of reducing the app's stack usage, but this should probably be the last resort, +because if all large objects are boxed, the stack usage in each branch should be relatively small, which will make +the overhead relatively small as well. From 223c0ea02d56409c06061bf8a393ff2d500fd2c4 Mon Sep 17 00:00:00 2001 From: Boris Oncev Date: Tue, 2 Jun 2026 09:30:29 +0200 Subject: [PATCH 3/3] Transfer changes from other feature branch --- Cargo.lock | 8 +- Cargo.toml | 2 +- messages/src/lib.rs | 18 ++- src/app_ui/sign.rs | 4 +- src/errors.rs | 15 +++ src/handlers/sign_tx/mod.rs | 12 +- src/handlers/sign_tx/summary_collector.rs | 4 +- src/main.rs | 10 +- .../mintlayer_command_sender.py | 43 +++++-- .../mintlayer_response_unpacker.py | 36 ++---- .../test_sign_tx_lock_then_transfer/00010.png | Bin 3659 -> 3679 bytes .../test_sign_tx_lock_then_transfer/00011.png | Bin 3659 -> 3679 bytes .../test_sign_tx_lock_then_transfer/00010.png | Bin 13472 -> 13519 bytes .../test_sign_tx_lock_then_transfer/00011.png | Bin 13472 -> 13519 bytes .../nanox/test_app_mainmenu/00002.png | Bin 407 -> 362 bytes .../00010.png | Bin 0 -> 576 bytes .../00011.png | Bin 0 -> 677 bytes .../00012.png | Bin 0 -> 672 bytes .../00013.png | Bin 0 -> 530 bytes .../00020.png | Bin 0 -> 767 bytes .../00021.png | Bin 0 -> 709 bytes .../00022.png | Bin 0 -> 744 bytes .../00023.png | Bin 0 -> 767 bytes .../00024.png | Bin 0 -> 330 bytes .../00025.png | Bin 0 -> 700 bytes .../00010.png | Bin 0 -> 600 bytes .../00011.png | Bin 0 -> 708 bytes .../00012.png | Bin 0 -> 439 bytes .../00020.png | Bin 0 -> 767 bytes .../00021.png | Bin 0 -> 709 bytes .../00022.png | Bin 0 -> 744 bytes .../00023.png | Bin 0 -> 767 bytes .../00024.png | Bin 0 -> 330 bytes .../00025.png | Bin 0 -> 733 bytes .../test_sign_tx_create_delegation/00010.png | Bin 0 -> 619 bytes .../test_sign_tx_create_delegation/00011.png | Bin 0 -> 595 bytes .../test_sign_tx_create_delegation/00012.png | Bin 0 -> 605 bytes .../test_sign_tx_create_delegation/00013.png | Bin 0 -> 580 bytes .../test_sign_tx_create_delegation/00014.png | Bin 0 -> 767 bytes .../test_sign_tx_create_delegation/00015.png | Bin 0 -> 336 bytes .../test_sign_tx_create_delegation/00016.png | Bin 0 -> 649 bytes .../test_sign_tx_create_stake_pool/00010.png | Bin 518 -> 572 bytes .../test_sign_tx_create_stake_pool/00011.png | Bin 330 -> 557 bytes .../test_sign_tx_create_stake_pool/00012.png | Bin 627 -> 651 bytes .../test_sign_tx_create_stake_pool/00013.png | Bin 298 -> 549 bytes .../test_sign_tx_create_stake_pool/00014.png | Bin 0 -> 660 bytes .../test_sign_tx_create_stake_pool/00015.png | Bin 0 -> 541 bytes .../test_sign_tx_create_stake_pool/00016.png | Bin 0 -> 666 bytes .../test_sign_tx_create_stake_pool/00017.png | Bin 0 -> 657 bytes .../test_sign_tx_create_stake_pool/00018.png | Bin 0 -> 675 bytes .../test_sign_tx_create_stake_pool/00019.png | Bin 0 -> 518 bytes .../test_sign_tx_create_stake_pool/00020.png | Bin 0 -> 767 bytes .../test_sign_tx_create_stake_pool/00021.png | Bin 0 -> 330 bytes .../test_sign_tx_create_stake_pool/00022.png | Bin 0 -> 618 bytes .../test_sign_tx_delegation_staking/00010.png | Bin 0 -> 550 bytes .../test_sign_tx_delegation_staking/00011.png | Bin 0 -> 669 bytes .../test_sign_tx_delegation_staking/00012.png | Bin 0 -> 767 bytes .../test_sign_tx_delegation_staking/00013.png | Bin 0 -> 351 bytes .../test_sign_tx_delegation_staking/00014.png | Bin 0 -> 670 bytes .../test_sign_tx_freeze_tokens/00010.png | Bin 0 -> 623 bytes .../test_sign_tx_freeze_tokens/00011.png | Bin 0 -> 724 bytes .../test_sign_tx_freeze_tokens/00020.png | Bin 0 -> 767 bytes .../test_sign_tx_freeze_tokens/00021.png | Bin 0 -> 709 bytes .../test_sign_tx_freeze_tokens/00022.png | Bin 0 -> 744 bytes .../test_sign_tx_freeze_tokens/00023.png | Bin 0 -> 767 bytes .../test_sign_tx_freeze_tokens/00024.png | Bin 0 -> 330 bytes .../test_sign_tx_freeze_tokens/00025.png | Bin 0 -> 596 bytes .../nanox/test_sign_tx_htlc/00010.png | Bin 567 -> 487 bytes .../nanox/test_sign_tx_htlc/00011.png | Bin 298 -> 637 bytes .../nanox/test_sign_tx_htlc/00012.png | Bin 0 -> 615 bytes .../nanox/test_sign_tx_htlc/00013.png | Bin 0 -> 675 bytes .../nanox/test_sign_tx_htlc/00014.png | Bin 0 -> 661 bytes .../nanox/test_sign_tx_htlc/00015.png | Bin 0 -> 648 bytes .../nanox/test_sign_tx_htlc/00020.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_htlc/00021.png | Bin 0 -> 709 bytes .../nanox/test_sign_tx_htlc/00022.png | Bin 0 -> 752 bytes .../nanox/test_sign_tx_htlc/00023.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_htlc/00024.png | Bin 0 -> 330 bytes .../nanox/test_sign_tx_htlc/00025.png | Bin 0 -> 555 bytes .../00010.png | Bin 0 -> 716 bytes .../00011.png | Bin 0 -> 577 bytes .../00012.png | Bin 0 -> 738 bytes .../00013.png | Bin 0 -> 799 bytes .../00014.png | Bin 0 -> 559 bytes .../00015.png | Bin 0 -> 767 bytes .../00016.png | Bin 0 -> 336 bytes .../00017.png | Bin 0 -> 564 bytes .../nanox/test_sign_tx_issue_nft/00010.png | Bin 354 -> 672 bytes .../nanox/test_sign_tx_issue_nft/00011.png | Bin 563 -> 543 bytes .../nanox/test_sign_tx_issue_nft/00012.png | Bin 298 -> 643 bytes .../nanox/test_sign_tx_issue_nft/00013.png | Bin 0 -> 596 bytes .../nanox/test_sign_tx_issue_nft/00014.png | Bin 0 -> 541 bytes .../nanox/test_sign_tx_issue_nft/00015.png | Bin 0 -> 672 bytes .../nanox/test_sign_tx_issue_nft/00016.png | Bin 0 -> 755 bytes .../nanox/test_sign_tx_issue_nft/00017.png | Bin 0 -> 674 bytes .../nanox/test_sign_tx_issue_nft/00018.png | Bin 0 -> 437 bytes .../nanox/test_sign_tx_issue_nft/00019.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_issue_nft/00020.png | Bin 0 -> 354 bytes .../nanox/test_sign_tx_issue_nft/00021.png | Bin 0 -> 554 bytes .../test_sign_tx_lock_then_transfer/00010.png | Bin 0 -> 649 bytes .../test_sign_tx_lock_then_transfer/00011.png | Bin 0 -> 608 bytes .../test_sign_tx_lock_then_transfer/00012.png | Bin 0 -> 429 bytes .../test_sign_tx_lock_then_transfer/00020.png | Bin 0 -> 767 bytes .../test_sign_tx_lock_then_transfer/00021.png | Bin 0 -> 658 bytes .../test_sign_tx_lock_then_transfer/00022.png | Bin 0 -> 597 bytes .../test_sign_tx_lock_then_transfer/00023.png | Bin 0 -> 720 bytes .../test_sign_tx_lock_then_transfer/00024.png | Bin 0 -> 767 bytes .../test_sign_tx_lock_then_transfer/00025.png | Bin 0 -> 330 bytes .../test_sign_tx_lock_then_transfer/00026.png | Bin 0 -> 689 bytes .../nanox/test_sign_tx_mint_tokens/00010.png | Bin 0 -> 607 bytes .../nanox/test_sign_tx_mint_tokens/00011.png | Bin 0 -> 625 bytes .../nanox/test_sign_tx_mint_tokens/00012.png | Bin 0 -> 438 bytes .../nanox/test_sign_tx_mint_tokens/00020.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_mint_tokens/00021.png | Bin 0 -> 708 bytes .../nanox/test_sign_tx_mint_tokens/00022.png | Bin 0 -> 714 bytes .../nanox/test_sign_tx_mint_tokens/00023.png | Bin 0 -> 540 bytes .../nanox/test_sign_tx_mint_tokens/00024.png | Bin 0 -> 511 bytes .../nanox/test_sign_tx_mint_tokens/00025.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_mint_tokens/00026.png | Bin 0 -> 334 bytes .../nanox/test_sign_tx_mint_tokens/00027.png | Bin 0 -> 550 bytes .../test_sign_tx_order_conclude/00010.png | Bin 0 -> 580 bytes .../test_sign_tx_order_conclude/00011.png | Bin 0 -> 552 bytes .../test_sign_tx_order_conclude/00020.png | Bin 0 -> 767 bytes .../test_sign_tx_order_conclude/00021.png | Bin 0 -> 709 bytes .../test_sign_tx_order_conclude/00022.png | Bin 0 -> 753 bytes .../test_sign_tx_order_conclude/00030.png | Bin 0 -> 767 bytes .../test_sign_tx_order_conclude/00031.png | Bin 0 -> 708 bytes .../test_sign_tx_order_conclude/00032.png | Bin 0 -> 714 bytes .../test_sign_tx_order_conclude/00033.png | Bin 0 -> 540 bytes .../test_sign_tx_order_conclude/00034.png | Bin 0 -> 521 bytes .../test_sign_tx_order_conclude/00035.png | Bin 0 -> 767 bytes .../test_sign_tx_order_conclude/00036.png | Bin 0 -> 330 bytes .../test_sign_tx_order_conclude/00037.png | Bin 0 -> 565 bytes .../nanox/test_sign_tx_order_fill/00010.png | Bin 0 -> 560 bytes .../nanox/test_sign_tx_order_fill/00011.png | Bin 0 -> 598 bytes .../nanox/test_sign_tx_order_fill/00012.png | Bin 0 -> 401 bytes .../nanox/test_sign_tx_order_fill/00020.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_order_fill/00021.png | Bin 0 -> 709 bytes .../nanox/test_sign_tx_order_fill/00022.png | Bin 0 -> 752 bytes .../nanox/test_sign_tx_order_fill/00030.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_order_fill/00031.png | Bin 0 -> 708 bytes .../nanox/test_sign_tx_order_fill/00032.png | Bin 0 -> 714 bytes .../nanox/test_sign_tx_order_fill/00033.png | Bin 0 -> 540 bytes .../nanox/test_sign_tx_order_fill/00034.png | Bin 0 -> 514 bytes .../nanox/test_sign_tx_order_fill/00035.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_order_fill/00036.png | Bin 0 -> 330 bytes .../nanox/test_sign_tx_order_fill/00037.png | Bin 0 -> 541 bytes .../nanox/test_sign_tx_transfer/00010.png | Bin 0 -> 590 bytes .../nanox/test_sign_tx_transfer/00011.png | Bin 0 -> 552 bytes .../nanox/test_sign_tx_transfer/00012.png | Bin 0 -> 474 bytes .../nanox/test_sign_tx_transfer/00013.png | Bin 0 -> 767 bytes .../nanox/test_sign_tx_transfer/00014.png | Bin 0 -> 326 bytes .../nanox/test_sign_tx_transfer/00015.png | Bin 0 -> 518 bytes .../test_sign_tx_unfreeze_tokens/00010.png | Bin 0 -> 593 bytes .../test_sign_tx_unfreeze_tokens/00011.png | Bin 0 -> 559 bytes .../test_sign_tx_unfreeze_tokens/00020.png | Bin 0 -> 767 bytes .../test_sign_tx_unfreeze_tokens/00021.png | Bin 0 -> 709 bytes .../test_sign_tx_unfreeze_tokens/00022.png | Bin 0 -> 744 bytes .../test_sign_tx_unfreeze_tokens/00023.png | Bin 0 -> 767 bytes .../test_sign_tx_unfreeze_tokens/00024.png | Bin 0 -> 330 bytes .../test_sign_tx_unfreeze_tokens/00025.png | Bin 0 -> 604 bytes .../test_sign_tx_unmint_tokens/00010.png | Bin 0 -> 602 bytes .../test_sign_tx_unmint_tokens/00011.png | Bin 0 -> 555 bytes .../test_sign_tx_unmint_tokens/00020.png | Bin 0 -> 767 bytes .../test_sign_tx_unmint_tokens/00021.png | Bin 0 -> 709 bytes .../test_sign_tx_unmint_tokens/00022.png | Bin 0 -> 744 bytes .../test_sign_tx_unmint_tokens/00023.png | Bin 0 -> 767 bytes .../test_sign_tx_unmint_tokens/00024.png | Bin 0 -> 544 bytes .../test_sign_tx_unmint_tokens/00025.png | Bin 0 -> 532 bytes .../test_sign_tx_unmint_tokens/00026.png | Bin 0 -> 556 bytes .../test_sign_tx_lock_then_transfer/00010.png | Bin 12465 -> 12489 bytes .../test_sign_tx_lock_then_transfer/00011.png | Bin 12465 -> 12489 bytes tests/test_app_mainmenu.py | 9 +- tests/test_sign_cmd.py | 118 +++++++++++++++--- tests/test_sign_message.py | 16 ++- 175 files changed, 208 insertions(+), 87 deletions(-) create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_authority/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00015.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_delegation/00016.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00015.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00016.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00017.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00018.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00019.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_create_stake_pool/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_delegation_staking/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_delegation_staking/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_delegation_staking/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_delegation_staking/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_delegation_staking/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_freeze_tokens/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00015.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_htlc/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00015.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00016.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00017.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00015.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00016.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00017.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00018.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00019.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_issue_nft/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00026.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00026.png create mode 100644 tests/snapshots/nanox/test_sign_tx_mint_tokens/00027.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00030.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00031.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00032.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00033.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00034.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00035.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00036.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_conclude/00037.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00030.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00031.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00032.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00033.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00034.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00035.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00036.png create mode 100644 tests/snapshots/nanox/test_sign_tx_order_fill/00037.png create mode 100644 tests/snapshots/nanox/test_sign_tx_transfer/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_transfer/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_transfer/00012.png create mode 100644 tests/snapshots/nanox/test_sign_tx_transfer/00013.png create mode 100644 tests/snapshots/nanox/test_sign_tx_transfer/00014.png create mode 100644 tests/snapshots/nanox/test_sign_tx_transfer/00015.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00010.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00011.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00020.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00021.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00022.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00023.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00024.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00025.png create mode 100644 tests/snapshots/nanox/test_sign_tx_unmint_tokens/00026.png diff --git a/Cargo.lock b/Cargo.lock index 147b2fa..ece13d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -549,9 +549,9 @@ dependencies = [ [[package]] name = "include_gif" -version = "1.2.6" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4046578028f0249b76fb88acb6a0eac1f635bf9e2630ba5d0562831597ffc323" +checksum = "59152fb9707e856f65a10a25ba0b7141589bcf5cbe7f653fcda2875e45fc78f7" dependencies = [ "flate2", "image", @@ -612,9 +612,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "ledger_device_sdk" -version = "1.34.0" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adde0c75d115974c33db5e8e50dbf809d874d64ea970570cd6cc523ce009d6b" +checksum = "85fc7dea35e2d9d0a305fc9594539af5f510cd7c2d764f944542c4710731ae58" dependencies = [ "const-zero", "include_gif", diff --git a/Cargo.toml b/Cargo.toml index 0673ad8..74d068f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] messages = { path = "./messages" } -ledger_device_sdk = "1.34.0" +ledger_device_sdk = "1.35.1" ledger_secure_sdk_sys = "1.16.1" hex = { version = "0.4.3", default-features = false, features = ["alloc"] } bech32 = { version = "0.11", default-features = false, features = ["alloc"] } diff --git a/messages/src/lib.rs b/messages/src/lib.rs index 0aa0f8b..eac377f 100644 --- a/messages/src/lib.rs +++ b/messages/src/lib.rs @@ -402,16 +402,24 @@ pub enum StatusWord { // Standard Ledger APDU Codes #[display("Success")] Ok = 0x9000, + #[display("Nothing received")] + NothingReceived = 0x6982, #[display("User cancelled")] Deny = 0x6985, #[display("CLA not supported")] ClaNotSupported = 0x6E00, - #[display("Wrong P1/P2 parameters")] - WrongP1P2 = 0x6B00, #[display("Instruction not supported")] - InsNotSupported = 0x6D00, + InsNotSupported = 0x6E01, + #[display("Wrong P1/P2 parameters")] + WrongP1P2 = 0x6E02, #[display("Wrong APDU length")] - WrongApduLength = 0x6700, + WrongApduLength = 0x6E03, + #[display("Unknown")] + Unknown = 0x6D00, + #[display("Panic")] + Panic = 0xE000, + #[display("Device locked")] + DeviceLocked = 0x5515, // App Specific Errors (0xB...) #[display("Transaction display failed")] @@ -454,6 +462,8 @@ pub enum StatusWord { MaxBufferLenExceeded = 0xB012, #[display("Different input commitment hash")] DifferentInputCommitmentHash = 0xB013, + #[display("Invalid Timestamp")] + InvalidTimestamp = 0xB014, // Ecc Errors #[display("ECC Carry")] diff --git a/src/app_ui/sign.rs b/src/app_ui/sign.rs index 2983c77..767e82d 100644 --- a/src/app_ui/sign.rs +++ b/src/app_ui/sign.rs @@ -159,7 +159,7 @@ fn transaction_title(tx_type: &Option) -> &'static str { Some(TxType::Htlc) => "Sign create HTLC transaction", Some(TxType::CreateDelegation) => "Sign create delegation transaction", Some(TxType::DelegationStake) => "Sign stake delegation transaction", - Some(TxType::DelegationWithdrawl) => "Sign withdrawal delegation transaction", + Some(TxType::DelegationWithdrawal) => "Sign withdrawal delegation transaction", Some(TxType::CreateStakePool) => "Sign create stake pool transaction", Some(TxType::DecommissionStakePool) => "Sign decommission stake pool transaction", Some(TxType::CreateNft) => "Sign create NFT transaction", @@ -478,7 +478,7 @@ fn format_input(input: &InputCommand, coin: CoinType) -> Result StatusWord { CxError::GenericError => StatusWord::EccGenericError, } } + +pub fn sdk_err_to_status(e: ledger_device_sdk::io::StatusWords) -> StatusWord { + match e { + ledger_device_sdk::io::StatusWords::Ok => StatusWord::Ok, + ledger_device_sdk::io::StatusWords::BadCla => StatusWord::ClaNotSupported, + ledger_device_sdk::io::StatusWords::NothingReceived => StatusWord::NothingReceived, + ledger_device_sdk::io::StatusWords::BadIns => StatusWord::InsNotSupported, + ledger_device_sdk::io::StatusWords::BadP1P2 => StatusWord::WrongP1P2, + ledger_device_sdk::io::StatusWords::BadLen => StatusWord::WrongApduLength, + ledger_device_sdk::io::StatusWords::UserCancelled => StatusWord::Deny, + ledger_device_sdk::io::StatusWords::Unknown => StatusWord::Unknown, + ledger_device_sdk::io::StatusWords::Panic => StatusWord::Panic, + ledger_device_sdk::io::StatusWords::DeviceLocked => StatusWord::DeviceLocked, + } +} diff --git a/src/handlers/sign_tx/mod.rs b/src/handlers/sign_tx/mod.rs index 72adf3e..a610f67 100644 --- a/src/handlers/sign_tx/mod.rs +++ b/src/handlers/sign_tx/mod.rs @@ -420,17 +420,17 @@ fn handle_input_req( } fn handle_input_commitment_req( - req: Box, + req: &SighashInputCommitment, mut ctx: Box, review: &NbglStreamingReview, ) -> Result { - update_hash(&req, &mut ctx.input_commitments_hasher)?; - update_hash(&req, &mut ctx.tx_hasher)?; + update_hash(req, &mut ctx.input_commitments_hasher)?; + update_hash(req, &mut ctx.tx_hasher)?; ctx.advance_next_input_additional_info_step(review) } fn handle_output_req( - req: Box, + req: &TxOutputReq, mut ctx: Box, review: &NbglStreamingReview, ) -> Result { @@ -453,10 +453,10 @@ pub fn handle_sign_tx( handle_input_req(req, ctx)? } (SignTxReq::InputCommitment(req), TxParsingContext::ParsingInputCommitments(ctx)) => { - handle_input_commitment_req(req, ctx, review)? + handle_input_commitment_req(req.as_ref(), ctx, review)? } (SignTxReq::Output(req), TxParsingContext::ParsingOutputs(ctx)) => { - handle_output_req(req, ctx, review)? + handle_output_req(req.as_ref(), ctx, review)? } (SignTxReq::NextSignature, TxParsingContext::Signing(ctx)) => { TxParsingContext::Signing(ctx) diff --git a/src/handlers/sign_tx/summary_collector.rs b/src/handlers/sign_tx/summary_collector.rs index d6a449c..d39edef 100644 --- a/src/handlers/sign_tx/summary_collector.rs +++ b/src/handlers/sign_tx/summary_collector.rs @@ -38,7 +38,7 @@ pub enum TxType { Htlc, CreateDelegation, DelegationStake, - DelegationWithdrawl, + DelegationWithdrawal, CreateStakePool, DecommissionStakePool, CreateNft, @@ -212,7 +212,7 @@ impl TxSummaryCollector { self.input_command = Some(InputCommand::AccountSpending(acc.spending.clone())); match acc.spending { AccountSpending::DelegationBalance(_, amount) => { - self.tx_type = merge_tx_type(self.tx_type, TxType::DelegationWithdrawl); + self.tx_type = merge_tx_type(self.tx_type, TxType::DelegationWithdrawal); self.increase_input_totals(CoinOrTokenId::Coin, amount)?; } } diff --git a/src/main.rs b/src/main.rs index 20b6379..962c253 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,18 +44,17 @@ use ledger_device_sdk::{ }; use app_ui::menu::ui_menu_main; +use errors::sdk_err_to_status; use handlers::{ get_public_key::handle_get_public_key, sign_message::{handle_sign_message, setup_sign_message, SignMessageContext}, - sign_tx::{setup_sign_tx, TxParsingContext}, + sign_tx::{handle_sign_tx, setup_sign_tx, TxParsingContext}, }; use messages::{ decode_all, encode, Ins, PubKeyP1, Response, SignP1, StatusWord, APDU_CLASS, MAX_ADPU_DATA_LEN, P2_DONE, P2_MORE, }; -use crate::handlers::sign_tx::handle_sign_tx; - ledger_device_sdk::set_panic!(ledger_device_sdk::exiting_panic); pub const MAX_BUFFER_LEN: usize = 4 * MAX_ADPU_DATA_LEN; @@ -98,7 +97,7 @@ impl ApduTransport { /// - If `P2 == P2_DONE`, it finishes accumulation and returns `Ok(Some(RawInstruction))`. pub fn receive(&mut self, comm: &mut Comm) -> Result { let header: ApduHeader = comm.next_command(); - let data = comm.get_data().map_err(|_| StatusWord::WrongApduLength)?; + let data = comm.get_data().map_err(sdk_err_to_status)?; // Validation: If we are in the middle of a stream, INS and P1 must match if let (Some(curr_ins), Some(curr_p1)) = (self.current_ins, self.current_p1) { @@ -331,8 +330,7 @@ fn handle_command(cmd: &Command, ctx: &mut AppContext) -> Result ctx, _ => return Err(StatusWord::WrongContext), }; - let response = handle_sign_message(data, msg_ctx).map(Response::MessageSignature); - response + handle_sign_message(data, msg_ctx).map(Response::MessageSignature) } }, Command::Ping => Ok(Response::Pong), diff --git a/tests/application_client/mintlayer_command_sender.py b/tests/application_client/mintlayer_command_sender.py index e1ca862..939d5e4 100644 --- a/tests/application_client/mintlayer_command_sender.py +++ b/tests/application_client/mintlayer_command_sender.py @@ -22,6 +22,11 @@ CLA: int = 0xE1 +@dataclass +class ReviewTransaction: + transaction: Transaction + has_command_input: bool + review_custom_screen_text: str @dataclass class SignTxStep: @@ -65,8 +70,8 @@ class InsType(IntEnum): class Errors(IntEnum): SW_DENY = 0x6985 SW_CLA_NOT_SUPPORTED = 0x6E00 - SW_INS_NOT_SUPPORTED = 0x6D00 - SW_WRONG_P1P2 = 0x6B00 + SW_INS_NOT_SUPPORTED = 0x6E01 + SW_WRONG_P1P2 = 0x6E02 SW_WRONG_APDU_LENGTH = 0x6E03 SW_WRONG_RESPONSE_LENGTH = 0xB000 @@ -137,11 +142,19 @@ def sign_message( for chunk in chunks[:-1]: self.backend.exchange( - cla=CLA, ins=InsType.SIGN_MESSAGE, p1=SignMessageP1.P1_NEXT, p2=P2.P2_MORE, data=chunk + cla=CLA, + ins=InsType.SIGN_MESSAGE, + p1=SignMessageP1.P1_NEXT, + p2=P2.P2_MORE, + data=chunk ) with self.backend.exchange_async( - cla=CLA, ins=InsType.SIGN_MESSAGE, p1=SignMessageP1.P1_NEXT, p2=P2.P2_LAST, data=chunks[-1] + cla=CLA, + ins=InsType.SIGN_MESSAGE, + p1=SignMessageP1.P1_NEXT, + p2=P2.P2_LAST, + data=chunks[-1] ) as response: yield response @@ -202,7 +215,7 @@ def sign_tx(self, transaction: Transaction) -> Generator[SignTxStep, None, None] ): kind = "start" yield SignTxStep(kind=kind, index=0) - + # ---- OUTPUTS ---- print("streaming outputs") @@ -301,7 +314,17 @@ def pack_derivation_path(derivation_path: str) -> bytes: return path_obj.encode(path).data -def sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input, review_custom_screen_text): +def sign_tx_review( + client, + device, + navigator, + scenario_navigator, + review_transaction: ReviewTransaction, +): + transaction = review_transaction.transaction + has_command_input = review_transaction.has_command_input + review_custom_screen_text = review_transaction.review_custom_screen_text + start_idx = 0 if not device.is_nano: instruction = NavInsID.SWIPE_CENTER_TO_LEFT @@ -370,7 +393,11 @@ def sign_tx_review(client, device, navigator, scenario_navigator, transaction, h start_idx += 10 elif step.kind == "final": - scenario = NavigationScenarioData(scenario_navigator.device, scenario_navigator.backend, UseCase.TX_REVIEW, True) + scenario = NavigationScenarioData( + scenario_navigator.device, + scenario_navigator.backend, + UseCase.TX_REVIEW, + True) navigator.navigate_until_text_and_compare( navigate_instruction=scenario.navigation, validation_instructions=scenario.validation, @@ -386,4 +413,4 @@ def sign_tx_review(client, device, navigator, scenario_navigator, transaction, h assert len(responses) == len(transaction.inputs) for response in responses: - assert len(response) == TX_RESPONSE_SIZE \ No newline at end of file + assert len(response) == TX_RESPONSE_SIZE diff --git a/tests/application_client/mintlayer_response_unpacker.py b/tests/application_client/mintlayer_response_unpacker.py index 42ad63a..edb28d4 100644 --- a/tests/application_client/mintlayer_response_unpacker.py +++ b/tests/application_client/mintlayer_response_unpacker.py @@ -51,12 +51,7 @@ def unpack_get_app_and_version_response(response: bytes) -> Tuple[str, str]: # Unpack from response: -# response = pub_key_len (1) -# pub_key (var) -# chain_code_len (1) -# chain_code (var) def unpack_get_public_key_response(response: bytes) -> Tuple[int, bytes, int, bytes]: - print("response bytes: ", len(response)) response_bytes = scalecodec.base.ScaleBytes(response) response_obj = scalecodec.base.RuntimeConfiguration().create_scale_object( "Response", data=response_bytes @@ -79,24 +74,13 @@ def unpack_get_public_key_response(response: bytes) -> Tuple[int, bytes, int, by # Unpack from response: -# response = sig_len (1) -# sig (var) -def unpack_sign_message_response(response: bytes) -> Tuple[int, bytes]: - response, sig_len, sig = pop_size_prefixed_buf_from_buf(response) - - assert sig_len == 64 - assert len(response) == 0 - return sig_len, sig - - -# Unpack from response: -# response = der_sig_len (1) -# der_sig (var) -# v (1) -def unpack_sign_tx_response(response: bytes) -> Tuple[int, bytes, int]: - response, der_sig_len, der_sig = pop_size_prefixed_buf_from_buf(response) - response, v = pop_sized_buf_from_buffer(response, 1) - - assert len(response) == 0 - - return der_sig_len, der_sig, int.from_bytes(v, byteorder="big") +def unpack_sign_message_response(response: bytes) -> bytes: + response_bytes = scalecodec.base.ScaleBytes(response) + response_obj = scalecodec.base.RuntimeConfiguration().create_scale_object( + "Response", data=response_bytes + ) + resp = response_obj.decode() + assert resp["MessageSignature"] is not None + signature = bytes.fromhex(resp["MessageSignature"]["signature"][2:]) + assert len(signature) == 64 + return signature diff --git a/tests/snapshots/apex_p/test_sign_tx_lock_then_transfer/00010.png b/tests/snapshots/apex_p/test_sign_tx_lock_then_transfer/00010.png index 8d17b0f2e8a9bd09d6b2fbf9e0854dd506d98b60..49bf43a5c7cb66b27ec6f09a0e357bca2c151b6e 100644 GIT binary patch literal 3679 zcmeHKeLT}^8?PiUoy?KfgB&MPERs-cR@9juu|&s9p%M#a@;0I^S$S}>Q&KXlk}a~P zw(>G>%@MIR#SwWK7Q-+zvw0bh<#f*HJe~93^XK#Ve1D(oci+G3dwo9l{r%n7b=|2) z-JqM4zf)ebX3eI<&IgaJS+f?n^8BK>Ze<3i)x0uL*>?Eg0nfPHiQcYT1-mrm>xxt7 zmIG!%p49sKA6y(quH?;mPSgN5WEjt~8#w~GPm3mCxv2?^D*bSE<_UkAU4WT>K_3mAgN_e)f=9>wJ+=a>B+QorOSm2z6 zZHe*8?uEi0-t!ug#qx~9a>Y5jr449(Cw4pDwD#>sfB0$eboJc0|8Ab;dAFg8a$jz3 zjAxadRK0;0`q;-9!P_X$DvhzSmRRT(_3o zJHu?kB0@>r5Y3=0D5VlB_B4N*bHLOqx~1pxH33(NjhbF8eSxCf-xbG{VB7J;z)Jmu zwF*eRF{p7|P#GkXBhI4H+DJ!+q)z2U3waN{6<}6Pq~0Rqo+_Zzx(Zr1e>1&zWr)EV zVN|z$h1lAb4)a2e;B0BD4xOIWCWok_1ZlOGT=np3JFN0l>aNS0Ptxb=u+>mw)rSmb z+op=1g#7yrlB>6AV1C~nR&DKRd4*a|WrZ1oahFWkCgfvv6XDXn=3%=M!c}K9JP|oF zAv6Uz{8|_}72|Vy?oOjm+*_o0ua-6MTI}qPN4;IMz`vDQv8n5ot)XKr^^>HUH`U1= zZtmmy+MS8*AG^8am~Z-K&Oh8r*%O-E3rMy*6J-rveu__GHs`#;)rbT)h>^a+1+MVz z=C>hhXl4e>CCf-@Y0+fS-Lh=Lpi5V-Fh`}KPg|340dy1msV<)0(AJU98hf(1BuYm7 zbfGhyi^9V}2IGSY zMkWmZHpl#zf=BCp>HAt{n#>n2;+WH-vg>myu|QZ}#~wCnV&oEQ>G_j1m^IB9RGx}; zZ5pg&)LBMdhxtK?RE!ADs%!+6PIECYboULl7MJD>v+Ab?2a@sdL`B=$(7EiTZVFhG z3`YaQ2&kKQVTV;@p!H6S&?Y}!dl^M1PQL*5DwvKbAd2-+jQRc#AlT47MhNsGPP3hQ z15PL~EU6toC18fBEnK1(qoyK<`hYKDqs2C@8RRZvD~H71sQ6M%^knpc;MEP2@I)jv z;=r3>GzkLQD;d^S<|Nv`oYu}@z+3wkfo^a-7=VDpOUcQ)Fe!B#Z9bKgWd5Ap6m#-y zrld}Y*_>e(VWGt~av&M^fJEHHep}koHbIEtVn~%o5+Xw2IwtgY9m=v`f8o``;y(L*@&CgA5^p7bWZJqvD??TKIy&{M zAwA^9uLqj9_q66@fThS ze(JN|7ymE(FY#pY)#d+GI9^L06QX3eBE~AlN922u;;MhOt~EV2sYMR~yl!?#O6Om! zP}R&KFvGg>;{04o034=>3a7%n!|zt|!SRcfeZ|wubk#DYfi^3R^tfEh2h7^jB|7|v zoxIcL4go(;#EHql#J5R0gDZt;GCS|%@i67oJiG9-uW8#&cUIoDu4X!R`a|DSJ;Xp1 zsr^)Bei8qnb`Us=c^>$K9|XZV1K*L|KZA5* zn2|t&qk$mea^84}yO& zlk}e=L@46-B%iI&)A{e;z^0$z4|5u`3axmN0hM;nb2j8YloYF~R5S&*`+Y~^ zxI+>x+-vUV)pxc6`xOOZF65f}b?{6Q819vuu zUvTa6Cq7Hu$nX34f}0pAIw}>JAmAu6f&Y$kP4L*@1f*jJ;L_N+F0;GzV2d;Dh~I8L zjo}5_=Y*$j*}Fv)$V<_VN*hG{$b%y(Nv24-=1u)|4o(jQCqbz*6u<#X*ZztEa;o19 zz;>Y!m+Ym9WO%c)@qRvU9vw%!>=m9n76gy!SGPZ>J8E^`zH;P|zQO4s>hO_o-`WgI zF}>Dxl9rAu+iYo976Q#%bwr1rqJ!SRKL9Sy7(c-7#AQL-$0ZF&m9V$ovzKp*vQK>LZbYU@hR(zmnoMJGI8PtVsOZZ}d@&Nad8GW-*zugER2 zFZF#zm?=%f^(!>(L@oK&Vv7CPqW#bB*=pf6W6q2BvykrlvsY8WAGzfJFMqoOvv@X} zU0b_206?EziUVzd?9Z6oj!_ygV$~=B6$gwerQ_eOR1EszXlU0~Oy)?&bEqsan!M8w z!m7GGv~S)b6DRi|@;2CUZ|das1Xx z1lyp!njtpU$h_JGgJetxOfhkqb(AF4z{J z5t~@paUeK9F97zD)k?~{U58KC)0a}p%^wWgy~sIW1Ne<$l2jJ!zYc94nO~}ktF{;+SxxL$6g|Fs(p4z5HWrk5j$H+YjiM7EbXRZkVKhYxd*YyU|CzR zs@JMmEB(!?UcW27Qbt$BUR8SK#IK6Is`OW6DIh_wr~9Pm!-AEIV+zvi!W%EVNzLxUM)3}#%1xu3yy_Os94=Q;nJKhN{Lzh^z``_@{2toQf5>-!$r+d|}I zevnzSW{uq0Gp8=DS+iDK@;#AWCt1l*YLPhd+s>Xkc_}P&l1fR=IlOb@iO6drahj>Z z4x6wZZNRJbq2C=U_+`5cQhU(Y?(wz50u9skQ{#v&g#Rr>eTP5IaxV*OIn*ODL(1IK z=@dmG`F*NT**Amybbw`KJ%fy>M7Yy7gqD{hV!X{GV*pWRXnmexZCjBi)OHuv6rqRh z_N`FQj9v`z<-3SI58KSu-Ek@r`2TPtrl(V!9^Hz;>UC;Eug*W~e5wSmNEUk_V?sVE zwoP_vl#fw>LU(0SD}xG8o4+m;nOn;s&(}o>M*41s-|WoR!b_P%Y(E>7!_=Jal&0l^pfm z<3t|n=L2_Ik>{g3Q&LfOajou+bf$s$j$x^~z@erRiKQmo0gX(0cG+fxCve5<@*euX z9?^|U*f5i>U7WyBCUly<>;;jA%!}b!g)Wx^s2l(eekzSy%?!?8Yg6`hkLuT?bE}yu}hsLp> z17=mz|B#cRHTXrA_?G{6L+7`1UZ4s3rhS_}d3IW;R!+a(;6~6T&3yp#0}5Mb=5cY; z@}b&xsIJ5H@JU7>SyWaS?{}KaF6+D1$3BK;3hqK*F@=yScrHg z^mR>FxRj#c=|~a2m~X&_XA$&XHX`Xxhu(PYCZB;=y1*$76B%jyI6{OYcaZyYb!`C{;hM=ZTW%npbQ<2@3a20wgpUE2R{Px@Q_=W3fmtXeNkQX&$$CR=NC` z`P+61l-x+P>lcp?HanPM8j9ics+@!g{Xn1+WgmXZg!a>r%r{b#{v$tMfU}*@5VS}t zu0I>)E)9APJ2j?ydyu=-=jKN;*?Y_dCcc)I~Vj-L)@T%!scU=Olmbeu9(Nbc#aJJ>A?01%?hw z8)Sb5Blo=Qh9TP7X9Y^&+4W!p^mT(+;0LfmG+GEMRB@y3Di>y`w4d3`l+ zYWqsuYW!;cYCTC@X7*2ibdxP{4*lJcUlDS?*MDxh zYhm#6qHY3FdApl%H}8jOa6Cr!`@}4z2MH6O3uUUjP%Ab?kdTyokBWjPJ^4eYPuC`7 ze=dr2{o3~p(8oVh5X#J@FPxLxKdQ_F$9twaxVAQHe;t`UzQfqMVNG6r!nH(U7yE)C z*}X|gK##f~Kz=dyrX-S*`qDKE3Nl0A6J@{Uqq1L6dLQ_XpDo@$bwMTamj62~Z)Bg$ z#pj)y1|NZ-yB5Ilv0362h3tV3hcZRr__wGz%fpM>n)MS5Gg^ny^P>*zW37F2U5YU9 zBG}IY#}QTs2Y5O1OYzV8HKqnB_n0M(sYel<}Im@frdvAJ^;1z(tn_+(WWjdt|PZQ zun?HU!_N~#46LRd)FuL-+F)yr-X`YY{i1b%EDgaTfXzv><9=NU1BOI4Cqha(jArbc z_YPecz=^5?6e1$nA26J&n`iyYupjYO@{eiVXjF&)Fpt&dvUp%5e&1Y$cg4&v z$-w%>Hm{G$q)MGKm7vM6js*;RJS7d06#?iA-v4V* zcY$CTEQW}}rHH`^H9C~<0bQP@Uwlm@JFrX9hTn>G+&nqc)vZDWXX0fug(R_`iS_=4 z>DkWd6diJ}PMM>9pM#^Mkp@X7h?2fw2+jSk1NvVpz`A@K)1pQ=Zo3(K?txCbDgi}& zc>G&HP*gSjBH>xpJQ6zMmw`({K+%Pmq48AQ-p4^M!EO5*-RaAzr z+k6}Zjv?XqDaYG=A9&K=e`2y*L`gOuf0WBHP1*pz|E#z1i`wP31-`}ukFMmCW?i*0 z*;wmWdVvO-2vU$N=`o!5+C)J;_GltU);vr*-eNQ>yQeJuVO(o@=##7R73Bl8L@MDG z1VTK&**5U&{gL zZ33vRnBBHm^&y;q3KMi5l`V64>-eKakx``ayHnOxJPZf6*IJ5FK+!RHl#`=>Y%qQ&KXlk}a~P zw(>G>%@MIR#SwWK7Q-+zvw0bh<#f*HJe~93^XK#Ve1D(oci+G3dwo9l{r%n7b=|2) z-JqM4zf)ebX3eI<&IgaJS+f?n^8BK>Ze<3i)x0uL*>?Eg0nfPHiQcYT1-mrm>xxt7 zmIG!%p49sKA6y(quH?;mPSgN5WEjt~8#w~GPm3mCxv2?^D*bSE<_UkAU4WT>K_3mAgN_e)f=9>wJ+=a>B+QorOSm2z6 zZHe*8?uEi0-t!ug#qx~9a>Y5jr449(Cw4pDwD#>sfB0$eboJc0|8Ab;dAFg8a$jz3 zjAxadRK0;0`q;-9!P_X$DvhzSmRRT(_3o zJHu?kB0@>r5Y3=0D5VlB_B4N*bHLOqx~1pxH33(NjhbF8eSxCf-xbG{VB7J;z)Jmu zwF*eRF{p7|P#GkXBhI4H+DJ!+q)z2U3waN{6<}6Pq~0Rqo+_Zzx(Zr1e>1&zWr)EV zVN|z$h1lAb4)a2e;B0BD4xOIWCWok_1ZlOGT=np3JFN0l>aNS0Ptxb=u+>mw)rSmb z+op=1g#7yrlB>6AV1C~nR&DKRd4*a|WrZ1oahFWkCgfvv6XDXn=3%=M!c}K9JP|oF zAv6Uz{8|_}72|Vy?oOjm+*_o0ua-6MTI}qPN4;IMz`vDQv8n5ot)XKr^^>HUH`U1= zZtmmy+MS8*AG^8am~Z-K&Oh8r*%O-E3rMy*6J-rveu__GHs`#;)rbT)h>^a+1+MVz z=C>hhXl4e>CCf-@Y0+fS-Lh=Lpi5V-Fh`}KPg|340dy1msV<)0(AJU98hf(1BuYm7 zbfGhyi^9V}2IGSY zMkWmZHpl#zf=BCp>HAt{n#>n2;+WH-vg>myu|QZ}#~wCnV&oEQ>G_j1m^IB9RGx}; zZ5pg&)LBMdhxtK?RE!ADs%!+6PIECYboULl7MJD>v+Ab?2a@sdL`B=$(7EiTZVFhG z3`YaQ2&kKQVTV;@p!H6S&?Y}!dl^M1PQL*5DwvKbAd2-+jQRc#AlT47MhNsGPP3hQ z15PL~EU6toC18fBEnK1(qoyK<`hYKDqs2C@8RRZvD~H71sQ6M%^knpc;MEP2@I)jv z;=r3>GzkLQD;d^S<|Nv`oYu}@z+3wkfo^a-7=VDpOUcQ)Fe!B#Z9bKgWd5Ap6m#-y zrld}Y*_>e(VWGt~av&M^fJEHHep}koHbIEtVn~%o5+Xw2IwtgY9m=v`f8o``;y(L*@&CgA5^p7bWZJqvD??TKIy&{M zAwA^9uLqj9_q66@fThS ze(JN|7ymE(FY#pY)#d+GI9^L06QX3eBE~AlN922u;;MhOt~EV2sYMR~yl!?#O6Om! zP}R&KFvGg>;{04o034=>3a7%n!|zt|!SRcfeZ|wubk#DYfi^3R^tfEh2h7^jB|7|v zoxIcL4go(;#EHql#J5R0gDZt;GCS|%@i67oJiG9-uW8#&cUIoDu4X!R`a|DSJ;Xp1 zsr^)Bei8qnb`Us=c^>$K9|XZV1K*L|KZA5* zn2|t&qk$mea^84}yO& zlk}e=L@46-B%iI&)A{e;z^0$z4|5u`3axmN0hM;nb2j8YloYF~R5S&*`+Y~^ zxI+>x+-vUV)pxc6`xOOZF65f}b?{6Q819vuu zUvTa6Cq7Hu$nX34f}0pAIw}>JAmAu6f&Y$kP4L*@1f*jJ;L_N+F0;GzV2d;Dh~I8L zjo}5_=Y*$j*}Fv)$V<_VN*hG{$b%y(Nv24-=1u)|4o(jQCqbz*6u<#X*ZztEa;o19 zz;>Y!m+Ym9WO%c)@qRvU9vw%!>=m9n76gy!SGPZ>J8E^`zH;P|zQO4s>hO_o-`WgI zF}>Dxl9rAu+iYo976Q#%bwr1rqJ!SRKL9Sy7(c-7#AQL-$0ZF&m9V$ovzKp*vQK>LZbYU@hR(zmnoMJGI8PtVsOZZ}d@&Nad8GW-*zugER2 zFZF#zm?=%f^(!>(L@oK&Vv7CPqW#bB*=pf6W6q2BvykrlvsY8WAGzfJFMqoOvv@X} zU0b_206?EziUVzd?9Z6oj!_ygV$~=B6$gwerQ_eOR1EszXlU0~Oy)?&bEqsan!M8w z!m7GGv~S)b6DRi|@;2CUZ|das1Xx z1lyp!njtpU$h_JGgJetxOfhkqb(AF4z{J z5t~@paUeK9F97zD)k?~{U58KC)0a}p%^wWgy~sIW1Ne<$l2jJ!zYc94nO~}ktF{;+SxxL$6g|Fs(p4z5HWrk5j$H+YjiM7EbXRZkVKhYxd*YyU|CzR zs@JMmEB(!?UcW27Qbt$BUR8SK#IK6Is`OW6DIh_wr~9Pm!-AEIV+zvi!W%EVNzLxUM)3}#%1xu3yy_Os94=Q;nJKhN{Lzh^z``_@{2toQf5>-!$r+d|}I zevnzSW{uq0Gp8=DS+iDK@;#AWCt1l*YLPhd+s>Xkc_}P&l1fR=IlOb@iO6drahj>Z z4x6wZZNRJbq2C=U_+`5cQhU(Y?(wz50u9skQ{#v&g#Rr>eTP5IaxV*OIn*ODL(1IK z=@dmG`F*NT**Amybbw`KJ%fy>M7Yy7gqD{hV!X{GV*pWRXnmexZCjBi)OHuv6rqRh z_N`FQj9v`z<-3SI58KSu-Ek@r`2TPtrl(V!9^Hz;>UC;Eug*W~e5wSmNEUk_V?sVE zwoP_vl#fw>LU(0SD}xG8o4+m;nOn;s&(}o>M*41s-|WoR!b_P%Y(E>7!_=Jal&0l^pfm z<3t|n=L2_Ik>{g3Q&LfOajou+bf$s$j$x^~z@erRiKQmo0gX(0cG+fxCve5<@*euX z9?^|U*f5i>U7WyBCUly<>;;jA%!}b!g)Wx^s2l(eekzSy%?!?8Yg6`hkLuT?bE}yu}hsLp> z17=mz|B#cRHTXrA_?G{6L+7`1UZ4s3rhS_}d3IW;R!+a(;6~6T&3yp#0}5Mb=5cY; z@}b&xsIJ5H@JU7>SyWaS?{}KaF6+D1$3BK;3hqK*F@=yScrHg z^mR>FxRj#c=|~a2m~X&_XA$&XHX`Xxhu(PYCZB;=y1*$76B%jyI6{OYcaZyYb!`C{;hM=ZTW%npbQ<2@3a20wgpUE2R{Px@Q_=W3fmtXeNkQX&$$CR=NC` z`P+61l-x+P>lcp?HanPM8j9ics+@!g{Xn1+WgmXZg!a>r%r{b#{v$tMfU}*@5VS}t zu0I>)E)9APJ2j?ydyu=-=jKN;*?Y_dCcc)I~Vj-L)@T%!scU=Olmbeu9(Nbc#aJJ>A?01%?hw z8)Sb5Blo=Qh9TP7X9Y^&+4W!p^mT(+;0LfmG+GEMRB@y3Di>y`w4d3`l+ zYWqsuYW!;cYCTC@X7*2ibdxP{4*lJcUlDS?*MDxh zYhm#6qHY3FdApl%H}8jOa6Cr!`@}4z2MH6O3uUUjP%Ab?kdTyokBWjPJ^4eYPuC`7 ze=dr2{o3~p(8oVh5X#J@FPxLxKdQ_F$9twaxVAQHe;t`UzQfqMVNG6r!nH(U7yE)C z*}X|gK##f~Kz=dyrX-S*`qDKE3Nl0A6J@{Uqq1L6dLQ_XpDo@$bwMTamj62~Z)Bg$ z#pj)y1|NZ-yB5Ilv0362h3tV3hcZRr__wGz%fpM>n)MS5Gg^ny^P>*zW37F2U5YU9 zBG}IY#}QTs2Y5O1OYzV8HKqnB_n0M(sYel<}Im@frdvAJ^;1z(tn_+(WWjdt|PZQ zun?HU!_N~#46LRd)FuL-+F)yr-X`YY{i1b%EDgaTfXzv><9=NU1BOI4Cqha(jArbc z_YPecz=^5?6e1$nA26J&n`iyYupjYO@{eiVXjF&)Fpt&dvUp%5e&1Y$cg4&v z$-w%>Hm{G$q)MGKm7vM6js*;RJS7d06#?iA-v4V* zcY$CTEQW}}rHH`^H9C~<0bQP@Uwlm@JFrX9hTn>G+&nqc)vZDWXX0fug(R_`iS_=4 z>DkWd6diJ}PMM>9pM#^Mkp@X7h?2fw2+jSk1NvVpz`A@K)1pQ=Zo3(K?txCbDgi}& zc>G&HP*gSjBH>xpJQ6zMmw`({K+%Pmq48AQ-p4^M!EO5*-RaAzr z+k6}Zjv?XqDaYG=A9&K=e`2y*L`gOuf0WBHP1*pz|E#z1i`wP31-`}ukFMmCW?i*0 z*;wmWdVvO-2vU$N=`o!5+C)J;_GltU);vr*-eNQ>yQeJuVO(o@=##7R73Bl8L@MDG z1VTK&**5U&{gL zZ33vRnBBHm^&y;q3KMi5l`V64>-eKakx``ayHnOxJPZf6*IJ5FK+!RHl#`=>Y%qM*X#9qzdgTU zZp6nU$^!y{_>BL!dJ_cV7zcs&+}XbeC{e-X8-YN|DC4X8w}Ud5$V;z_|E!I6>_4u> zVYMIrk3W$|(UB+b?-zaa1a$I`{YM_rkfL_3WqbZ)feJUm*@I5dyRy$#K!z5qx_cKn zKzcblcSE>9AohMY(2dwgE>OY$(+}Gju8L;FUVn19c5J?SLXK8xrTpU)&nW7=%~Y#w zA_VQ8e#SUS9*@dSDXOEGymlF?fr{fS1hrix(+khy6=U;djI(dvc+R-9G?98XS0Ki~ zTTjeU1ZYz@hc4`^Su!!YYd2s<+^c^BHNAj1hzobsrijXk0sDd&fMI{Cf9cb~$F|W-RPkh9w!7!3q4QZ*8 z{sxy(fc}Yc;7M&8G3qfe)yoK|YMxN&m4pso?y|U(B*TC%)e5~|7*@{3`FNQVNHr>@ zmmACuK}o|K{dq4e3Uf6eRn|9}6{=hXW?sw1Mnec;#n8KcdH%D|8SM?e4eSW~b*CRk zv3q)!6ovcjjG)@9KGV2aitQkLiUzGZD3<0(Z@-OMwV2dN`JT$yMHrC>OgZ-ySKsiRU8R zwNf(^q$YFV7Z$wdK7r_PCAb+4eVPOM8}U~e0;vPJ!Q zL!%!3L*IP7YHBfM&;@;>@=S|d>?*j{yM{Z7v}Dydy3j9OX=5N+`pRWUTUlwbHOD0l zEKi2j&ItBpHm3`BRauq1c8?GV){|*^3bt3p@+p-re@{z;`i(<$A2j}PXm3pOgoi_- zjB%$m%HiZMwP^mB$KWmWi?)a-I=&jIn<>IC7cikL#t;2LJkEKE) zXt$GO+UfO-@*3kWO3Btkw`Q9$+BwCg07z8 z!ECgB{J)y?^l_1023q<&rX!kr4P^)@ujmj3oDYHgWbx^jJhe8i{GwX(GsX`@uXj|w zf}T1PmoHbmFg)4}&4|p=5}*X5evl<9a66UP?^zK`&4UhL_6%ol4H?|V-qfiK7`2`9 zU_7=bBko@lG^Bgk-5TROf~%+tIA?%kky!1L$A-&!XrOO^Xz~$Ire4qO&}1 zLnNy6qWBMHzeo!2=IyVleiFDnqtl}{Ba7Ucnen`fI|da^j>e66L#Z8b zqeO?EksS$^R@gT|Q=g;a-B(^Zg@seJ$3VO>vG;0HgU|Pf6d|Bf~oHh?b znXRSxFPCDa{hIs(&!(9`)g+#b{&O0`*kMZFg|Tmk4K30One0&|$)|NC9UnR>k%=0U z0SU*a$rXx^yw4qBO_4(yY6g0`dio4xX$$MN<^yLQx!$^LEECf!65>j$ed(ZJd_<$S z74Fp!PkGEHmZ}{Ztq^Bb$|tMw4UbJWjx;e`rG3f6RB~V^hnm;cv8GF4UZNuGKhv za6@EvysM$wsaWlxGyEU~Ud?CrHfq|VdR{{3(_w+_)bK_SOBw^a{k{3>$K%Jz_jHx5 zAsv-fDXBq?+L6ZJzg=#ta^hw8-2-R(AwVqEy;aCM3&Yl`I%!;mQsnVNJ)m4c;R76c zXZMJLUPt3wW@~Oc1!SzvsQL zT@rH5Kil(k#68QB9Ik*U)1T|Eqm7wHaoq|noA)3-IyvRt#v;+~=|YB=*E`#AuxMi$&npum&*NJO&ExWDPC%O>&hGybWk|cjjpT|0bHU?ZH zYm4B;3yK;Q{vqE>%6!lxqv+t`53p-y` z$}c@hk^xRxBaASMmZ!tfO0=qmp-$en?(=hm+XL$XSe2cNv0vrS)AQ$oC2$pI^FR7e z_xI7x__j|4!%%tXB)F7_1FB%e(%D9JrlJM1j&AZ5H1rV{D0P=4LLCCVPgn@XyLXFf zSkV15pLfK&7}LeyA;Gv;Q-lbeoY1jbmak=P`WO6ZMc1+)k*!BWF{?s`iJO`muSe;# z^vy*F-4N;seS3UtCgJkIyyA1$d1Q?h*RXAqmX=urYMv%C=cP`?bA#1#gz6<2RNoiX zIR~G&!z~W0tZ~tO2v4G|n$!~rRC?Q)1moIrtlCR3LA!wE+57nJG;58kDz0essZOD; z7pV+cRk;jeBs;9cE+BNPRBQPrP?NhoK=HcQr`KI8y^rj%FpG^ zKvZYnFZ!jOJleuoHO>coCRdi+C^@1heu{Ir=?*Mw7Obr5BVvOZLZg=@+WqbD{LVh& zt~QWIx$-8VLN){I5OiI&*wEvaT2d)kN|}0NW^Cqmg}Z3Pr7{BHdhjKy^g`pLs}{~W zFkyTEwpt02dRxWyTlWjK_Y1b&d7C@|2L>n2h^b}#*=X`ofM?^2O`$JMrRVhzeXu(J z6e^M3M{s}Lh)oQswoS8Fp20!WTgz;t?!bWefK5bK%1?K$sWy4l-mMF2R_LtktWlKU z=ceM8ROU9;e{uP8yH*TZV%$a1cM4Nyk9MM^K2Z*}?i>!D{Z4kxCb({LQJq)jCASkN zyUjew?2mq|zHnq_!>G$?5+&ri5^imB<b4Ilhf4;2dqm8hu zk_ayShhRw@p%m?$`NrC{j|X8ZGZmWIKe+6Lx3go+{(@_2Fu#tTnw_gD$Em$6D>3S^ zmK|QY{(fq|t+$@Tw@o{d=vDtZE?$)cM5HjHX?ejV@Dt4E{m%%#Up3Ek~r_r-Q)PESxV|l9g+_lja(~*r%=8DGb)r4K`Pr6RUrK#>FkAXa=Zpzfc=S}cBH~^b_X~WD6XEqsBTes) zpQOUs0#6dR8SX<~ZF?ljES8_3R*hc?+)!x@kqB~|U}~wSM?7(ywOQT9yClOLl)O%4 zKj&&TS)V%^&eI@#;B?)&L7#n(PrMYiWK9)aYg|g0>|QF$M#f2vqM;;AnV91b{Y)B@ zhnDrRT=7u>>ln+1V#7W|ZY&(sgQdTVs5sQ4CbD%QOJ1aoKi>2u_Y0)MP8p1DM)Xn@ zJKE(mGhs7@3h+O(B(k3-+(U`@Q@eGCC)-<@w6Q+Ur8xS_()O-(z8=*rAR6q6ItZI; z+|o%FN@10Jg`hWo{SpzC?~M>1dknd|r-QE)Q9ijWbF*@fd}Zgc?Vb>1?zE6}M(5O( zI7*PSRA-{Aseq8w=6>X75~Oy>Ys&G3`+ikBm!&p8-~F{zjJrfQg`3D*ib#)lV1v(s z0jqw+H+6WMjQo03zkq|R9KUFJkrX}Uohj4qmk}>1zx`_cdZC|%pwl(GpnRt4s@g#} z!hBI$r`3)(b#uXsG~mUdz5Sr@Yoyiix0Bv;K1cp6dz#(N$q26hw3s%&*$@+p9~f9z z@0=6g8+9Dn-W^AM)?9boYgHp7(RH0@s$=)D%#+|v4R-E)OR`>B**#%RD!#9+t~lvM zL`2{v>=-imjctJZqD_>YlE|3zh>xGZlOiGM&y`dMU*`4F%ZHH34qwox@wyFvp870e zZLQli<*fz}FNfaUnO6h8?;D>pxDLTz`UCO`D{H=X7QPQ4vN<_9tBXJQtRSAJW(2dxR%ZUNZYsrRx{j39PYfChJE7k9F$tkY3(*d~m`HO7KkXMMS z0e{grt!L}XwKBvP0`k}TdI2;Ug=2QV6z=b_g_;3p>Z6A>S^b zS!?Kz^AOqEH~qD4#Ws-%1HMcxnUZ^S27d5y)9E2)v z(AIL((vq>?pgrr!!M$sLSQ}}~mU;MyGaA()kj!?n-N=gCz4Yq-?Q--vIPT1KVlQu( zqeGo2v_a{FEL`O*rsRW?-5V`+TIytLIEOYwq;q^MXQr;iA+Y@6Sm$-Yp6(#yXnL&p z;)7Xx7I60%slF_`%(2Al<031wW1Vp2jZCh;ijRnUdNy#a3%e%Z-k>q?jLy#PvCaD; z(d5uOSw}aqFT@Njc&qKwi>gCH(9^-oBX0xM#XIE^Yku{0KQtVppMiPQ=}02YpTbBC zL{k&xfJBF#9XqqsmbCAO0xy>Ha|eXSb)T3bU>e=(jdLCLM;P8 z6@r?OxQ%gYz-wk9sirh-6N_B$3_4Nstd%oC4L_)#I>*5+4*`eCG2Y(C}Zy9ve13QDRke~!M*$g*{@NykgnTu0U^tynuSKnORI z-eQaKX|nNwUD*@h0{=7Z(7Cd6KrKY$4$WQ-p;yxnu`o!--- zb8?FGl|qANZzBu1PR?|jnE|EZW)#ou+^_Isx6@Q|+066kz3dlApk&Xn!jjysFf(z0 zECwHPM!C#PsQp6@1Tgk{y?y6yI41IlcA=$SYL(@Bk6Bv2R&weNefRqXhDWnYu&2^d z&Nyk5p>EP+6SmvoI|aLaSr8t#O;AR0ar7ukroCtK&F_iLotss@rR%mS?oUW=occ%M z5Kw5Ohj*bm=ov&5{G;AG6(hY`sOQd7#2s&u=)ZdP+gA-I&$EC1-C3vCawLk0xfoo0 z1(;?O58e8POF|?{R>I#dbX242*FPue(RH|IwJP6TlyI?3-ekAt?bNzQwn{2KZJ|?v zSUXy1r^xNU#)#NgFf#{R8fhkyl1Gluew({y{<~|UWsiH~_r*-fXTjMdT}#WprJO;# zzrXhB%)wdWoFH61O9;>rU4L5qW32_#%QNf*4J|D-@Fw=RyXYf+$TPqO?K@{`tN$h~ za6grIzj^ak#TgFr9-MMd|huorJI4K!qW|89K4(h(AIF$MpF4g$^UALRzg8R~IH z-rTGF?>$t1zHbaAEeBu$qH(nOzc)Su4?38Z6)zXtO+|~>xzDCy|7jSO5I(n^?GAbU zoxiuyP08UXE&!`7&hP8!Vk2Z|K~(-fWr6Ut|Gfng$6B6If@Yz<|JW+8WAOA-xzm;O zOSySX|2!$ZKoO~?dS^q|SdG`Ng1 z=jj^gx)_^ZT%0+5`cm;s@N%6|^6zthrZo3^r`8ktW~NJ;l7NNa5`&3vVt&qJi~VJy z*7~pOasdA9Xd!550faSJ;LD4JWYNE0?voVt{N}?NzxmIz?Uw5)&ku_HSA(j)b1A{T z5S!0d``!3mu>x8*1@AH!3<9m?KIi=U(MV zVPee^1U(o2`Mx+VI6Dx)Liw{0?)$+p&0koj5}YCgrUCiDwv^QeFwku3^^Ce{Ko}9~ zuUQ&vis))emeG(z8qgLC{Y0YA^ekXd<-&&FCF*vjA0{69?CF+%tOER=mfcLo76+7z)f{CF~N zJgHz(y{veCNJ*Ll%UVV?i zdO4hDQeq*PMR2XN77v-ZxVyNP$71t8Mx2Yyul>XVf*WMv(9_0>x4W7VVBY3YwM>9v z+x7N&Uq;&ioc2a%h(gtoU2oW9qi?B)pGh3`4$;ZM@hW5N%e}MK1ZO-a2Vu1}B~B}T z8-NY`*JD|K?X>|68(!p^Fsk;hUw~T$P3^~M2{2SVff?q@Ig{YD%r={N$|ojQ z+MFnVzAK;**Q=~?sxL&L|1n|5FOmFPPaHpu(L%?(eZgi#^#rqKOcBKU5y7i466MNc zY01}MHmXniu=lSaZXE0J5eF2PpT{tZd*-^SEC|NJa3k>e{L`a*qgb>W6X{J*?Vxi2vl+*jN$qy%zN!91GpO zyabPL`T6V5-8)s^^(i3qIEr};*DUelfY2SFeVLAZS;i5S?HWC^6d0wW+dm6h7khTE zk=YNqSF@=O4h}P8E;b#yP*t(xLl%N9K3-e;K)@~F3ZQ5Cb(fBbb6jBjv3({x?{(y^ z*>&^qw3}pgd*R`T=NxaSZj&!%jUe}u@&YxnTDz;zab7+892oHvT1yJwo(&(gq=DPC zU$S@r6*WSW8(poB*J8&Al^r*J0rd9O)AFU!2Lo@q(fl9l0ud^k19=IL4fwh$GqQMo zd$FtYO9C|Bfk}Aut{2NiKk`EdG3<}IX4a32=`A{F8}zhG8!#NTC_!y^d7wF90xnCB z7EZ{V$>1z9c#uuqxNd3bk3AoN+q(-bR*oF2lvhILos0d-GM22^;HvWSYTsoRX*ip9 zhI;%FA8{IkNk>wC4u(HgI<{%;YUHbvgN-4PH#3LA{7wWqtQIBhoM#}&|6B`ese966 zJz_l#7rv4Y1TXu;*Ai+b;=El$u4m+FES_I|5lHoepu6=gEwgo^gR}9+3YetbGjrpv zenQ)K_OBK#p_uR5w`me7PMs|c^7!c1E2~DVpFyv@XG;}|>ZqTCSIgL6OmBVf`)kBu z9`eRZxmd3^HDMJDN(%loUXhxRI$E1$UbL*WR4;+V^GYy|wve@crc*>W~knr)ZoAK$_O`uMM5ccF!r?|3+-YNv2_ z%~g**jA_}@=LE6bCPDupN)O?i#Yu&7f|_uq4eIllZ5E3cQMQli-RDiJkvGx0_d>j4 z9|(a=3-JjH3mcRTFL0j+qgsm>010bd(#_QdMXl>TTm-t$bFfNZKn4EcH;K(_0^kJ_ zi39@4(;qk@rIjS~f#5Wa=1r#+7h}wXO8Pp2Zx*NYbD*)+LG?MCu-opW8u#?k z%k|KM)rr))F!&v!GEkAXRAR5bNOU(noMZgL`%lR$fTBH9p4^S{Vh_?7-G1X7vXBrq`WH8_F{7>YmRBEdazhgemDOW=3Pm)H32X14W|m zo!q-3_HO^IdIBA+wo|sSMH_31Y0h&OB`SGi$sOiFIEqi+(B4QJ_u%}FkcNbOw`$vJ zD8P{#N(^HupX7L!Z*r`dyiga_SqcmrGNf0Anq`Bsv{a#d;Q0LD_Fni(@^>b?F;HP!f!9pg zZ;^ML(W5x>F0t@^-Igo&V^y^<;w105@Q-6XC}U?X;e9I^UA^B+@&n>v4V-Nmlb=ZPJalz0(T~2&NpMKXw6h)zL#7P>crvFBDqC$csOePiJx5uWv{0 z=4}WXuHitDcg-YwK#@$hy5vKk@e}_sBJ=(!Zt`KP;Pjd16f2YqQ5o{=Jkg&z*KjUJ z@j&d2sdLB8OlE$#SahrD<`D4R0?TOo^3Z`YAUk9|L&xQaU|yR@_s3R4i#XOe@xt*Q z9Ob*svx66(G0;0cnpuSz9dmF@NSF^;QaER?p`34EqJwA;nY-zlMb$W~KAFDhmEw^k zLo_SEs%9j2+*OM+meoHT8+SH|8r(xo;eyjDQ`a8S7^$+kS-7z_%Q1~3b)f^ySH?G< zNN-D%IbAoKnl9(MFr)7YEv$#Uw+WF|+FM1u(uZ{oUr7n?kdeERSYnvDS633b>b9lE zRVAK9forxGpnK&Tl8^7Pl|=KFepyZ7gEdLBfA?wqVlc9sK2pC*;v7b7swZ69sWGy) zoZh@|X*nl=Es>9v-o4r>>Z;8%8abMh$PGRpaiqf}j&d1aDPwFJYLz4toXsRT78iFQ zf*N0hBkg1{4n6jPs+ZD({~%V$#pap(C@l1AbuFqMqZuK5bn7@*Xt$;_M|zL^H36sC z)C(q!ze+f5Hy&JeXe>U*{4>4qlQwA)M*&#FHAdmhbuUb-} zduP+YLUpi#4Ju$BC{fLT2@UwO*=*>JT5P^N-t-2_rH-_;D7?vHWv-pwy8%R-JcRzR zL9KEicl~Q@>ZYcz&e98h?8A_qf$J9yb}nA+Cb5!p_Zzkfe)rrCe>6gAwQD2g#ICAS%MQ{~%VXNAR?g{|=ntRjp`?K2K=Fva;-1=>LuK7U#NKN+C1)=8WEnb&Kx_htA4XkgPtN+zuL{zv zjFU3W0V*JKFyV6Z@yXxa)K}GU+DeKB8cg)}($zHfan3F78$ z*}rzf!m~fJQRSfvaxQqJ_s!7u;H8T5h>JsCDc+Bon9nt?r~S5|XSM)447Zbj=sZK| zW<` zV&zV?UwLe1^Ro7K^rG=noka^em&K;LigdxIY~hUi#)S001~X`nKc}>>s`KE^6=mmi ztrx!Yk*IK!=*jg-c7^r?N$a&RpIhDD=+=;cYixVxU5Az`oiKK+M-k3?+-DcQ)620m z0wQarC$WBFbZgLR^WAU#cJP867lf~fL>m|;;GB|VW}@5k7`$~MMW6hxhtW_#*fA|? z)aS-;59(}s7)RrAtAn>@QbQ6x74grSP*_Mjt{C_&O7!_gnF{u- zK5_+guLS)eH;Vj}mZaFMeC&D%bUtU7i-5-}0=Ys`rXK%ZZsA0Ph29wB^Q%17h2wj+ zei#pqk7c-hxNO$hPzZb62)D8^P)*TljvHZotVk68BlP;!Yu%qu?KXv-dvNx^tVW1W z+qM|xQg*k}V9O!D8*1E6#$Fj<~*QDIj)iUJ^joNt?k63H{0Ri7G(){fa{I+ zX7O=%{4WE4$=%)by>-|hGI*fv^kl@d=LX$H+G;t}{lfsBX?Ww9dO5nRyUG3jYpJ;W zHgoevIoiK-cwU5 zAtJMykgNO+PKe8Q!{o8q!!_0PF=kPbxRtVQz7&NDoywqP?9RgIFyAh2^yt6azyYEh z-pxPY-~;{n?>w+;d!H<=Xn!dWn>`1*SKWDd4OYu!GH5vDW=tp-h&`k82$ntrV723$ zlAs=yg~MyVBl;(R8#XR2As5TtZ6TQ03mU&nJX~c;m5T)of_BP`1Jpkve1Hzt%`$Hg z*y05JLAR5M%YVnvAc7+80Tk(K(;B4&8gVX+v@ai^o9+jVa@B_X545j;)iwTe$=|Zt zm&5<2n)aXD|GOI8|8MpGm-pXSZ2uc;*^%InDWGzIdMJcxUz-rgm9IcnXnLUuVc$yj zeX~qNB4e#po5>soyoQHxAVKmGWXKt)<1;%S*i5c<+O2QG+);@domOE*KPA6vWv$kw$WpQP~5&gxF1}p^)5ADU0F9JEb z$^cyv&MtB+KimT-IoVCoj-Twyr5rjc<9)H@Wd@V`-~*etN+At5t~D7PH6qnybj<)n zPe9eI&0t2xSTeg@3`nYG#B3AGQuH*Nfk9K;7J}kWxt-@V5X*v+IyNS2piNCpNF0US z@9zfo` zI4c)hDgPoLNRKANTy<92>~PJjGFW?H?^*oKYY$N_KH>nxbGTOuB($G4K4NH*O)X3h zkI1HeS=2VR7oCgaJ_}vAvvmj|s8!owCa%~vb-b4RCq+F#=fRH5L4FmV5nHNn-5~oa zkce`R3D+FbZAWGjT(#USUGG@CyG`c0a1!!MODQc0xzk^~4(;`~OL1}6de^?}158fR zCeT}>ojx+c@~wVNNzn8~t%6gGfaC*!T5tStv9V`jJ|#H0f)i^fv%&{w$6epACuQZj zM8qv$J6}%j^Iw{?4K$KC-tQaZ1!#X(d%*kV;;6ogAw!Xfjgus*4n2g~~z8YT9e#r8Wm54vtCqFB+-mW<=F(iL%81 zM0fto?elOcA0$=TbiCLHPcPhvJB6=AA_b1V00Ms+N1x}nWwW+ov{%P8gN!7YhofV1 zqKustMXyi1rB6y|*vsdhR(h7DkpLt0x4U6qr!V*hUY}0TtZ```IX&2QkiR15MO^DG zHxuf3A1N209%jv5kWefIdYfq*4P_{lduTGex5!N^Dy_xJ9Jq9$C$tuCcIKg|4Ff&3<` zz^13&{sk#Dk&Q3Ee|kCtZ>%@cbJ%Vmk=h#pRZ5sKslJ?GO_l0`g-O_aWF{(`#oTmi z8pBiEhPd)kUw2!H7zJxOTujjwJ{&>oild10BGDtt@eMz(CcykXvqq7FKXc0)H>;QZ zG{pJoy5SIB7)MObkCI0_Arr8GS`6lShn5w1A_!NAAilvlNT;m7p-F)4rL!Je(;$qi zKsuUh4Ek~t$JS`xK*?Lbm6C*9wsX02og<~dN1P9Lu)y#0VYs!RArdSqKCF)Wj_>A0 zoz8iir<=vOXZTMd;8*>==RE$P=A@K<^o_$s<0DGj-%Z~79opOUPMEtew?>#-;hXN> z`g4H1^UKcuG|);E)cfz}nf{NGQvauwx1@0G#RVe|4+{YQs01=LG{0JQ<^H4p1<0J` AdH?_b literal 13472 zcmeHu3pA8(+wY*HLMO>tMNv6saz2J64XGrAB*tk7<9v)iikPB|LxWTbA!lX`Ng<~h zO<{~N&f`2W!(a^iQSbZT-?!hr_xirIzO~odd+o87_003!hwHho>%Q*m`u(nXe9hd1 zZ=c9M5D3I)dfDhY2*fc00&(8v;RNnnXv;SNfxu8xBZHg4FBixQFN&_z#yj;1YjND- zf&b%AC?-Do#9bbdn7=?LF7q6Yp&>-km%S%0VkM9jDq&!OG3j`MU>gp++n>u6?~j+HPHR6e0X4zhaYz_i-!O^A+yYFOxeKt2kJ*9glgj7>- zp`dneKFp3ZtO-}{5CFG5S>5L$6u&y(+;G^q7eAkAQ4RA{sN%IhIM<8FZj38*Zi?GJTl^TLVGScK25MQ*L^Q&haZUyIk%$?$6WjNDEa#zN zyBh>3PsN|(4FC}8dXWE--9!;JYKvAo= z`m13&Zdt7jLdKRk)Ya})eLoDjqd$ynYozMgZuqJ~4wK*-PhP8(OG|i5TIhRuEZhG! zJwLP0qx$^90Yj6(9G?>iWVd(A)#5O?t1C&Yj)=%mJiH@9-JrF!>0$bdNo$_16ooZfrN4z$JcyioMd|6|ZFzuo&@u=iC~A=_J}bVN zf95@C^Q5Us4xT|K4fwx!sUSiy(>h6aR*~Xi`*DwgI89mP9wc7&x_*WgEJWE6FBf%u#Yl8{>bZ=F44W&<0jw8o z7GLXTkUu|u_@xTp4M&nUL$gKFq?NPN^jO~V_te&2F`4G4OjEUSVcQA7reGwd2&zVWDDx*2RmtpW;=7@-Z7s9lb3{_lEXOgB=n@x{U(AQ@^ad6G?AVSkOuC#S zPvl*>n=+mgMvcQNsWZ5V`V2-V#56UdHLXIi9hZx)aq&nC75L(kd#$TkctL z$-?TUbG~qUMOPJiP(soCm@A3rU@-0B%ZJc2WHbd!Lq@!E+1)K*FJ0AkX4&ntgGR_3 z#9)c>JSz}2n{4#L;z=BFGIs)nCv?XrG-m=(-~b`suw zRO89%Ic-*(IXn-%zubU~)3ih5UG-|6#Vr@ddo~93^<3yfUHY$Gb_F|D;DWs1? zuZdewpI%k9SH%7>yQe<#_n^+TB$#S8*}ImsP(v!o{OPTxg-O;>JCc2XU!D)chp49v z_Pm%$IoXs~zpb?vwD#ys#@K1!mvP72)>fYc{+R2V9Dzo8LeFH9czkqP>S#zl35Q!u zd!FX(Obp+kaGkygn$SP=#ig{^tCqBQD7n7ZtdTMgYHVs+_yn#M+#8c8yH7-ktT{BV*I=VROr{SUK{A9DPWxTK;3_r|xY+8^!g(>eNlp8jQzH(*Jeh6L){(6lW+%<#-;4{uzbCoYB{J zfkCpy`dt6P3r5-M^MoqSjP~$xgD?rOjHI77y{nc%8m zT5@JiyZ_2oUC}K)zIo2fu{m5rga$$g<&;RT?-~o&bws5p@e;uDiT7qRpW!xMI{9gS zGfEi`o*~vZw^Qvp72kTS5JupdM8%wf8ULi6-g7P4?3lzX^}!k)G5+G8vouN*aH`G_ zLtqJ#2)z?5WLiaJtdMKBUg(y-VkhdT8| zmDf-r;#~O#_OFFN*3#0_YMbPKZ9t+Hb|kIAO@bMuE;fHIp=Fd#uPiDGp)S^5PMv^j z{tOUrTk@>_J8#UuXCn|rKP_UB-m&ROj@Po95{PAiU)?os_7E{A zAwlC4Q6pq;W)16-Y|AXuc3E2wWp0hjbQt7>h*`VX0H-MSS|!m7O?`8H-SF0B0^AEo0uwXQ`SFKRuiC}c#@U>+Fc~=5QLDS;9Jm+zu^giWS()c8Qcq; zF$IMYnc{rI$Z4*lq?iJk zNc~11k~4&!n$cBilryU@Zm;m_a!%@=g+@)vCXT5~*b=l0NR5lb`uVaVgqIim@~7t1 zkGv4=Or6rWCK-})=3DM|xGuBtUC~*KiVyvB!xqWfyD?>T7vPifi6`j+^XIVCUMii~ z6v^nRr?Q)yy2YIZFIrjU2$-kdpALHVwYW$#7iSnCp?4zU-jRd}N4A&4&|u7jTqa@W z2PTDB?K#aiHJ-DVuO!k}EEh+81`$j1b`0`49+DGwWxfCXp4yJ}89p~*3+(=gt5E~P z?#VU}7ZtqMmxMfJ`Z}LQp2Vd2 zUAqiy(pTjwO6R&={XNwx_9Xe#+J)%4^}On8>Mp!T0Bq)9){Zx0_* zNC(sa?NTcA=y`-X=5xKj`lTWL==|Z2U$YC8?ZvgB7$8UrKSr02iL$efISz#7`$(GF z#kqvD5kXQbK+uGB>q3yg$@bNp z`F&w-iEo0x=U#a+oB(z$zpC6TlL6Ix(01ajsAW0ZI&=luADJb36=dz(0QZr>?AXE-|jA*QG3fo^V6{$)ZH#@BW$ZvC!) zXKckQgqCN6O0GGtJ&Zf#&AWahjtF4~wgR$qDfmf#`<)`RyEp0-AtJWYo1qF0Ypl4# zj&CefdA#^J7tRU|=bAx_;GIv;-Uo9;knw^it*_zQCd=c)$-n27unkQqxi2~-UL1qE z0wfVlxeJ zvwGnxx8H@lNh6(NMy%bW0DL7@;+tyAI*a$4qswMp)&W5ztS#r<2?Tuj`FJg)*Q~$h zKvs&4p-&oze71mij*ka&ls4}fzM}aH|Ct%|0KCo9g0GxlBRfx%8(jzVwU6+{BWDRR z8v>zHBPp!c043D~*sFbh6RS>P9v#+la&*~c zwtjA{vbAypf{uWcKO6#EZr?kR=cB~1)3j0Y6Bo%men3#NY0I8Gm0dveQazp3*40wk zF268)bx`@>uwq`@_Vdsu+efu2ZZ!*Y&3yM8mWr!tN{t@&^v?5!^vN9?YL8fnI4!TR zZXMU{N?%%12H$?atMCLQZ%2ki^592(kE14c|A4x@js^RaEEp=9#(NtJHki)+gv+Moid*k03thr-e#p z$rh!D-cPJ4BXWjre!UvUQBw8TaQOSU^z%FWbx?a2>A}84m1cU_fuqQ>vi`YDf(8$# zibNVp7`z|vaeb>G}2NyM#cbbp%LZAzoW3!=Z@NNGPfu@>_*VSG_0*)WYTK2?!=xJa z=H{J}TY!&=+S(M>I{=s$sZwnAM&sJb$_4O>GBw)Tg!if0e98@DA}gSh$mod|GjFE6 zT8VpdhaHnEximLtMmjBzV4_Yaet1fdfookO^XhrjhVT!d8nmSUg}YefvsF{bn#tOFeDialZo6KKGUYGx*?iQcTli(!7$ zlvxfsrk0p5C5f5ET33zox<-adGmw?#eW zcMRs%kbT0~lA+M2p2BV$F}7@XEM}^YEspgq1$RYGgm_yVE#v3&jt4E8_siuzYatFi zjK=s#ggnJiXkjE|_bo7^uwOH#(Rn4TBf|%D5qd~Z3s~@87-^6nT=05eP3L1sAI0cv0vO`#qx!AFOBUWG zw9t%OILn08!t7M&L6UQsOZr}ilJ|&Is+d`kM*Wcu>8$pBO61j_o)g@DYFdwC?&QA9 znHGOO{NC@J|3Nqt`tF?W{rjG=;R9dD_n8Bja}6eX$ugngg+1eE^oHJ$tjh{%!ZR=n z>&wofjABnxAch$P+H%(8dLeQI!awBxR_3ns{17h7 z0dDqbh*;>ro@j18h^?zWm%pxyccWjaxT0#=r}+VW?@ETm7@r32=E}7SB=^*tKrYMR zT@XW&I9Qp+n>!XG+P*0{*AiLZG$kd$@> zopu-x$`gQy0slDoKvxd!eESbv{NNln0I(<0LPtea%j^3#=>>)Bb3jb6eL3|@n&o|2M39j@E?EIYo{`7P(s_xf=&XWyUq)MqiRUH5JrlLYSUK6};L zAbUMa9mo;s$J^yPyIOo^(Yj*%K-3)-b>rc_n|Ys49tCGX^^OPKF`zUS7oCN+zGMQk z01x0t;aO+$Tw1QBN@Hoh>3NlFI|E*GLhsY;7Qioas9IU^VdYIzUwt+CEf~QH?_Lmz zU)Gq-k%{>BkDHai&6Mc$&Yq^|_^m7dXm`ysCEAQoAjNQ z@0I*_SG#(QJ!Q7j0x`qP4CVKKB;VS1rJFz=tWS7XD^st6e@sYz`FrSs;ygn5YodnE zLArKrR8dh8Nv|C9_uKC4K8AlsI5Yh~Q+|;dh8uhRkF}NsJE~!16N`%c(vc1Cv#9k{ z3CNCuZe~=)TvDMO?4kOnyYy%q?RZ1Q?M1GHRi8i7+3&WRiahNk6mM)PU~JhRK&OBC zm>uZ(_d~&8w-1NfmSWA4|0&(W(sFeWNbp|_=*K;*dT8ci;wt5L=e(lNU0Zh)kZ-9R zAbjj;{{JMB?(wiWb+CrK5C|k1GVw0|OXExUF%>ebC2A>v!a+6s2zZsCKPp7;E9w%# zZ?Rw4#BBYoM!aj|>6C@QFmP}P#prYvS|Oz9;&0QXTVHbl ztXW1pz&>nPqv~%H@#sE;U#`k`7r`l%%9;H!g8CR+l?%S@VG{rVObhE0y7_00sNHX; zX1o`MS_q`HA>rvSGndT&-aU=I^DiYHh2)U*tgL=6;=6wQ0I~lg7Q>{GXQj6Jpm*#M-tbIso{f+IGFTq<>Bum#gaEc_NQP z?gNa}6t$fdC1dKREs-!xgiw`uA$k1)@{Wp$`C5M4ouemDMEB#t$ycdzo#yWd>*1xq z4nIq^Ia~Y_Kp0NB(ldd%%bYOe!6>NBErB>MUS-_%XTtK7?R>W}(8rHJG8(nLRlVn{ zVe=`oufBJzepW&QZ|!G{x$PwHnOn*R2aR^fgRFw7vQ>f8riWQ4cT`Y)6o5~~&sNBZ zhT@;Ig9VHMh^kRG7i*tBiT`W9Nhf0FGqC*li8?vbPjI()tqPVgSaShJG);ohOLY11CVU1^%B5l4*zVn0& zVn#Rtd_{=o^qvQOT+n|A{5gh0oUym%K@)}9NSO%ED)1G{jt{Wt9^REpyviYu6DTSY z3C(VZ9k$u~XNtVDdE@H3DD&}iaN_RoDBOBC{B`0y?fj4ZGCZ8PgEBk&2!87tz-=KA z2Z;FaBZRr0EmmP=AVNdoa0hK>J2T<;>0|(nb3vKQ&=KfTNRStSYw!zWDVTu^{GDvY zsN}VcP4T#em^5q`O<&vg-_eQYIXN>`lQ-^J)OC;Q3h|2oLTd5uMo`Z`ax5r{Oqvl% z8ee)54LI|do_%!L#Lucfs$eAX6z57JfPG~&#*z{5+|l9vnof&$SoXMCGV#^U;fA*{ zc&v?UYHaLk>a2JkHRz>!z5)Q{#|Id(DdPk4f9dM#PQA2i(%`gRe6|VEHay3%V|J*c z0;xz%6fu2f^Dx&XT<@0?7AakI(uOp6V9?GgJhy(pYZbgXM)Iy@ZT7N077vF!4LiPm zv~R9@3(oKA8JixoaX|i#N~$0*T3mn8am4L};VHzAXS0%99?NBh;(HQAvRu@(j{f#y zkAILPhlNYO&hT0Qe!>8{o9eo>h&|h*9)eYi9%u@U&r36oUu+3%U3yw8FsK`ngV1_7 z%*xT|R@-Bq@I@Q9kXuwV8)!YBvUev47(I3NzKyGdp_M?~dYbmV1wJ?8K-jU(6h^BJt-66xB*6-2U6p>~?1R$=A_0d9^lY<6Bv?LIQE6FRNWU?sHGX3Um#=Qf{)l8c# zg|Vrx1@2yoOLCpstou7=m31xyK?&M+0$9@Gp`Y0sU3W!RAIGSXcMX7(XM$yD*Lz(b zCbWw9iXnW=^8tZ>*&dZxuM7D#*B&&ilXyeGcms2BP9%v7boXCFPx-#2*T@;T`!-}} z&0%Lp_>)#*xj}2aUpW3vq}nZlN9e6`gCY@`p}s!?*z4=Un|JoFQi>=wFq`ziIzf$l z`$3x$Dl21aYil1ZHm(qUgvccWz_Lg6tPZ}XLJsGTk}~J`Bp~P(E8#H>;9NiwYZwKD z7m|{a2`x??He4WMSIrn88l_MuQxq$!fNZ&2#V_b@98@kA3)8F`hgrU$U_Cnd{r4Ie z0gQDHCJA~-;r!R9KNh$H4TWvBcw&@zQB)S^C%fyuGNS;Z-R&rYk|%DIQ)npaC$3K{ z%iaUFs`nTLm2@=39~A6N52yqTe~L1KDi6}x3J~_!g82Pwfj8{` zxg`PmC2@0C)n3Q!24686lSP<;>*f|0rN$1ta9LkjsUCXC`6(P|&^4ruD=q@m@?;PQ zheENsxwslnlyEBimB#Mqbva2qfI~`XL2Xpw#muGPs1_J0iuKaZ+Uy-4vU2-(7qo3-Xe9gM&A%PN{@e5;xgP zR9x?At=^?S!xeZ$8%~C9n!KFpDDj|N>0ibT5o=5 zcRml%_PX-mu{#H8(Cu-!CPeK8pzW2lv0!Zl-Mxv|CKgXNf%7m2B9rson%6^Q00>^; zr?hE7_LU%*s?3X8Z=p2vn3Dp+H>7d&Je(rm^stNa%;+#p*+O3n(e$ji(O=q+S;{<< zmd9hfX^h^}vm6!WtlzoHS1;E$w{pFbVeZP~_Aag{2)8k!$a-#i?XQ#8N$PtewIwEd z89uyj8k%i0@KiHsp-rfa%C0JHS7F=ONk!42NaKy)W0ne*bD*g8A(ORxs@TiEVvbud zL}^h6y}799yJVoXjezma(cb3k72oZz8=x(*APR61OIM5(_%W6Q#vI<1hh6k?0MnlqxLXPsBHutD)F(J|&n60Db1c$t&j{sRhemzjsXqd= z3Mkv9hc8+0sha|X+sSx#D{{DKI!vSHa9h@>{jk*msp z2Jc^erf`Y_`w8{ePPq_lOP==2lmN$&v!akLGcVsT0UkNP9$28P<5>meM`Ml;c-I1? zP*hpJCq2GGZsAAl@c}PYvRvuh28%`7@)0n$Nzcra>-4K75fzu$*EMEt@XT8S{E*z! z3b{!x32VT=3MkV9Cc+1gi3g4{w#stv#BbR@dRelr|e>peg`2+RWW+p}kVxDct(P5Q8)J)Hg2u5SUVmGiGffZ1bga3*fkir;IJtP3izZ@nF#E z+k}?p##HIYN06?E&z}s!pv254X3!?nQzzfCDHU?GVz1J~j7}+I%O@Hx^e7Idf@$PQU(&93l+ z@=>bWJ*!8f=4Dc?71>(7uN+>`|LDP}j2L>SQykSaUK{lQqg?xNKrQ202KxTCHqp9Rt;8W}40a0F1pC2ew>K5`0r>(+YO1ue)Vu&_r(=NU=Lz=MPin%W}XKh#>pdD4X zu;Y1uJZQ$r6v|P&-^>#Y+=`g5g*YDBGg{J>LSLVUQx?T5tF*-Yt$+_vt7wulQ#NmM zHx9tP#A7RZTW#8dv{mso0>J72LvJS+32t^vgsrBA=&dLabkhvpfK2*eeDFnp}*VCMwr4*m8<~(}x@}bF&riN~QxqcY$&lr2k zR%>=`QBf#o@_cBXLGlx$hOwtQ?}K23L>;u>I<*+l{*qF>*Vrp%3z4c3Mi8 zC&UfhAI;g>Q4o^!1594fMt8(6GPoOv)l`;s zKzW{hQq#W~eFNZx6;cs52s-fcwd~14j!(`7Qf`?&mIC64wqcVjPSA&X#luq}k(#Jb zNyZ+~(<#hlpdgLrU%&yv0#Rg7#S<ixr_MY85a}GGcMYs z1BJ;vF#rdBSQw&@nMF_CSwjuLfimBeaTh3e=ap3H&hvB{vVD3xJ?Eh%e}W-x&PnJJ zfVKDDDEMBpK&8IZ*k4+dn7q!XKC}73YIj+&Y~pbqposb4t|>PlT~XAwXmOCrYierJ ziQ?O-H`Qx=?jkw~@Jux30l_a7m!XW%S5G1nPN&qs)UvyQL{HKy>uEw45W{Obs=1L? zX$RQv>=hrv<4r6D6np!YL`?9vgyK~-Ni{DPz5lCtgzbGE427nN1U_$XZ$$j1fmI44{6(nA`eu(`v3P$SN{MmSqscc9G9r!M+ z)|=Cdw7yGKh1}Q{O_lcD0tgDsp0B=Q)>e}ZbfAPwO~BYUNPI3>do^+*SbLCp)9M0) zFcA{ja^AK*vdJ-2aEmenAKX?)nVaGG9pYh#z8W&N#rPru&9UC7@@o*A#kCS!*@UA`HQozMV(Abgy#*ll$ zCs-^NT+^PMN_&4J{q2(xxy~_lAjE5|vn|P&1=O3EuZ@FTU~OsRVu@j?4dCy>2d)qH zl`~Fk$_9FeWvkzR`c1_f^P<&vKK#oT5afA`)m8UQ`jxXD1BEE{t26M5s8mUfTwLJy zqMnbX-|=4zI=ORysYm+Qb7U zctez z^B*Spi2(NZVOQ|J@4~pr`-}<>_UU7L({@79^9l=2J_K--CV=UoY4ZUl;vq)cPZWWw z{7|fvn?HyA8uQxV9ax%=sNQnfwqT>y>;U3{z8aVR%7rzJ=dPLK20&e}LwT)x<@00v zr@@c~VUu(h0A@KYSW7DLKYiHvna=vkfv}0DfL|$^t5UoN^tjU6?}Kwbn^M1O`8C|u zH*-Cx42eMCBT@?(Xotd&q~I<*OiA`jR-{`tZ zM}kBV=f=fLKw_%z#5iW zn^H%t#SK{B9KQLrw3>~pi=-U8LXDQ1E|pD`2mz~C`KG)^qJ-tlbWIJTH23VPdQspG zP!sujdu)7KUBNP!n(m}ZyKcTlUZx)BiL_MYziI$eM*X#9qzdgTU zZp6nU$^!y{_>BL!dJ_cV7zcs&+}XbeC{e-X8-YN|DC4X8w}Ud5$V;z_|E!I6>_4u> zVYMIrk3W$|(UB+b?-zaa1a$I`{YM_rkfL_3WqbZ)feJUm*@I5dyRy$#K!z5qx_cKn zKzcblcSE>9AohMY(2dwgE>OY$(+}Gju8L;FUVn19c5J?SLXK8xrTpU)&nW7=%~Y#w zA_VQ8e#SUS9*@dSDXOEGymlF?fr{fS1hrix(+khy6=U;djI(dvc+R-9G?98XS0Ki~ zTTjeU1ZYz@hc4`^Su!!YYd2s<+^c^BHNAj1hzobsrijXk0sDd&fMI{Cf9cb~$F|W-RPkh9w!7!3q4QZ*8 z{sxy(fc}Yc;7M&8G3qfe)yoK|YMxN&m4pso?y|U(B*TC%)e5~|7*@{3`FNQVNHr>@ zmmACuK}o|K{dq4e3Uf6eRn|9}6{=hXW?sw1Mnec;#n8KcdH%D|8SM?e4eSW~b*CRk zv3q)!6ovcjjG)@9KGV2aitQkLiUzGZD3<0(Z@-OMwV2dN`JT$yMHrC>OgZ-ySKsiRU8R zwNf(^q$YFV7Z$wdK7r_PCAb+4eVPOM8}U~e0;vPJ!Q zL!%!3L*IP7YHBfM&;@;>@=S|d>?*j{yM{Z7v}Dydy3j9OX=5N+`pRWUTUlwbHOD0l zEKi2j&ItBpHm3`BRauq1c8?GV){|*^3bt3p@+p-re@{z;`i(<$A2j}PXm3pOgoi_- zjB%$m%HiZMwP^mB$KWmWi?)a-I=&jIn<>IC7cikL#t;2LJkEKE) zXt$GO+UfO-@*3kWO3Btkw`Q9$+BwCg07z8 z!ECgB{J)y?^l_1023q<&rX!kr4P^)@ujmj3oDYHgWbx^jJhe8i{GwX(GsX`@uXj|w zf}T1PmoHbmFg)4}&4|p=5}*X5evl<9a66UP?^zK`&4UhL_6%ol4H?|V-qfiK7`2`9 zU_7=bBko@lG^Bgk-5TROf~%+tIA?%kky!1L$A-&!XrOO^Xz~$Ire4qO&}1 zLnNy6qWBMHzeo!2=IyVleiFDnqtl}{Ba7Ucnen`fI|da^j>e66L#Z8b zqeO?EksS$^R@gT|Q=g;a-B(^Zg@seJ$3VO>vG;0HgU|Pf6d|Bf~oHh?b znXRSxFPCDa{hIs(&!(9`)g+#b{&O0`*kMZFg|Tmk4K30One0&|$)|NC9UnR>k%=0U z0SU*a$rXx^yw4qBO_4(yY6g0`dio4xX$$MN<^yLQx!$^LEECf!65>j$ed(ZJd_<$S z74Fp!PkGEHmZ}{Ztq^Bb$|tMw4UbJWjx;e`rG3f6RB~V^hnm;cv8GF4UZNuGKhv za6@EvysM$wsaWlxGyEU~Ud?CrHfq|VdR{{3(_w+_)bK_SOBw^a{k{3>$K%Jz_jHx5 zAsv-fDXBq?+L6ZJzg=#ta^hw8-2-R(AwVqEy;aCM3&Yl`I%!;mQsnVNJ)m4c;R76c zXZMJLUPt3wW@~Oc1!SzvsQL zT@rH5Kil(k#68QB9Ik*U)1T|Eqm7wHaoq|noA)3-IyvRt#v;+~=|YB=*E`#AuxMi$&npum&*NJO&ExWDPC%O>&hGybWk|cjjpT|0bHU?ZH zYm4B;3yK;Q{vqE>%6!lxqv+t`53p-y` z$}c@hk^xRxBaASMmZ!tfO0=qmp-$en?(=hm+XL$XSe2cNv0vrS)AQ$oC2$pI^FR7e z_xI7x__j|4!%%tXB)F7_1FB%e(%D9JrlJM1j&AZ5H1rV{D0P=4LLCCVPgn@XyLXFf zSkV15pLfK&7}LeyA;Gv;Q-lbeoY1jbmak=P`WO6ZMc1+)k*!BWF{?s`iJO`muSe;# z^vy*F-4N;seS3UtCgJkIyyA1$d1Q?h*RXAqmX=urYMv%C=cP`?bA#1#gz6<2RNoiX zIR~G&!z~W0tZ~tO2v4G|n$!~rRC?Q)1moIrtlCR3LA!wE+57nJG;58kDz0essZOD; z7pV+cRk;jeBs;9cE+BNPRBQPrP?NhoK=HcQr`KI8y^rj%FpG^ zKvZYnFZ!jOJleuoHO>coCRdi+C^@1heu{Ir=?*Mw7Obr5BVvOZLZg=@+WqbD{LVh& zt~QWIx$-8VLN){I5OiI&*wEvaT2d)kN|}0NW^Cqmg}Z3Pr7{BHdhjKy^g`pLs}{~W zFkyTEwpt02dRxWyTlWjK_Y1b&d7C@|2L>n2h^b}#*=X`ofM?^2O`$JMrRVhzeXu(J z6e^M3M{s}Lh)oQswoS8Fp20!WTgz;t?!bWefK5bK%1?K$sWy4l-mMF2R_LtktWlKU z=ceM8ROU9;e{uP8yH*TZV%$a1cM4Nyk9MM^K2Z*}?i>!D{Z4kxCb({LQJq)jCASkN zyUjew?2mq|zHnq_!>G$?5+&ri5^imB<b4Ilhf4;2dqm8hu zk_ayShhRw@p%m?$`NrC{j|X8ZGZmWIKe+6Lx3go+{(@_2Fu#tTnw_gD$Em$6D>3S^ zmK|QY{(fq|t+$@Tw@o{d=vDtZE?$)cM5HjHX?ejV@Dt4E{m%%#Up3Ek~r_r-Q)PESxV|l9g+_lja(~*r%=8DGb)r4K`Pr6RUrK#>FkAXa=Zpzfc=S}cBH~^b_X~WD6XEqsBTes) zpQOUs0#6dR8SX<~ZF?ljES8_3R*hc?+)!x@kqB~|U}~wSM?7(ywOQT9yClOLl)O%4 zKj&&TS)V%^&eI@#;B?)&L7#n(PrMYiWK9)aYg|g0>|QF$M#f2vqM;;AnV91b{Y)B@ zhnDrRT=7u>>ln+1V#7W|ZY&(sgQdTVs5sQ4CbD%QOJ1aoKi>2u_Y0)MP8p1DM)Xn@ zJKE(mGhs7@3h+O(B(k3-+(U`@Q@eGCC)-<@w6Q+Ur8xS_()O-(z8=*rAR6q6ItZI; z+|o%FN@10Jg`hWo{SpzC?~M>1dknd|r-QE)Q9ijWbF*@fd}Zgc?Vb>1?zE6}M(5O( zI7*PSRA-{Aseq8w=6>X75~Oy>Ys&G3`+ikBm!&p8-~F{zjJrfQg`3D*ib#)lV1v(s z0jqw+H+6WMjQo03zkq|R9KUFJkrX}Uohj4qmk}>1zx`_cdZC|%pwl(GpnRt4s@g#} z!hBI$r`3)(b#uXsG~mUdz5Sr@Yoyiix0Bv;K1cp6dz#(N$q26hw3s%&*$@+p9~f9z z@0=6g8+9Dn-W^AM)?9boYgHp7(RH0@s$=)D%#+|v4R-E)OR`>B**#%RD!#9+t~lvM zL`2{v>=-imjctJZqD_>YlE|3zh>xGZlOiGM&y`dMU*`4F%ZHH34qwox@wyFvp870e zZLQli<*fz}FNfaUnO6h8?;D>pxDLTz`UCO`D{H=X7QPQ4vN<_9tBXJQtRSAJW(2dxR%ZUNZYsrRx{j39PYfChJE7k9F$tkY3(*d~m`HO7KkXMMS z0e{grt!L}XwKBvP0`k}TdI2;Ug=2QV6z=b_g_;3p>Z6A>S^b zS!?Kz^AOqEH~qD4#Ws-%1HMcxnUZ^S27d5y)9E2)v z(AIL((vq>?pgrr!!M$sLSQ}}~mU;MyGaA()kj!?n-N=gCz4Yq-?Q--vIPT1KVlQu( zqeGo2v_a{FEL`O*rsRW?-5V`+TIytLIEOYwq;q^MXQr;iA+Y@6Sm$-Yp6(#yXnL&p z;)7Xx7I60%slF_`%(2Al<031wW1Vp2jZCh;ijRnUdNy#a3%e%Z-k>q?jLy#PvCaD; z(d5uOSw}aqFT@Njc&qKwi>gCH(9^-oBX0xM#XIE^Yku{0KQtVppMiPQ=}02YpTbBC zL{k&xfJBF#9XqqsmbCAO0xy>Ha|eXSb)T3bU>e=(jdLCLM;P8 z6@r?OxQ%gYz-wk9sirh-6N_B$3_4Nstd%oC4L_)#I>*5+4*`eCG2Y(C}Zy9ve13QDRke~!M*$g*{@NykgnTu0U^tynuSKnORI z-eQaKX|nNwUD*@h0{=7Z(7Cd6KrKY$4$WQ-p;yxnu`o!--- zb8?FGl|qANZzBu1PR?|jnE|EZW)#ou+^_Isx6@Q|+066kz3dlApk&Xn!jjysFf(z0 zECwHPM!C#PsQp6@1Tgk{y?y6yI41IlcA=$SYL(@Bk6Bv2R&weNefRqXhDWnYu&2^d z&Nyk5p>EP+6SmvoI|aLaSr8t#O;AR0ar7ukroCtK&F_iLotss@rR%mS?oUW=occ%M z5Kw5Ohj*bm=ov&5{G;AG6(hY`sOQd7#2s&u=)ZdP+gA-I&$EC1-C3vCawLk0xfoo0 z1(;?O58e8POF|?{R>I#dbX242*FPue(RH|IwJP6TlyI?3-ekAt?bNzQwn{2KZJ|?v zSUXy1r^xNU#)#NgFf#{R8fhkyl1Gluew({y{<~|UWsiH~_r*-fXTjMdT}#WprJO;# zzrXhB%)wdWoFH61O9;>rU4L5qW32_#%QNf*4J|D-@Fw=RyXYf+$TPqO?K@{`tN$h~ za6grIzj^ak#TgFr9-MMd|huorJI4K!qW|89K4(h(AIF$MpF4g$^UALRzg8R~IH z-rTGF?>$t1zHbaAEeBu$qH(nOzc)Su4?38Z6)zXtO+|~>xzDCy|7jSO5I(n^?GAbU zoxiuyP08UXE&!`7&hP8!Vk2Z|K~(-fWr6Ut|Gfng$6B6If@Yz<|JW+8WAOA-xzm;O zOSySX|2!$ZKoO~?dS^q|SdG`Ng1 z=jj^gx)_^ZT%0+5`cm;s@N%6|^6zthrZo3^r`8ktW~NJ;l7NNa5`&3vVt&qJi~VJy z*7~pOasdA9Xd!550faSJ;LD4JWYNE0?voVt{N}?NzxmIz?Uw5)&ku_HSA(j)b1A{T z5S!0d``!3mu>x8*1@AH!3<9m?KIi=U(MV zVPee^1U(o2`Mx+VI6Dx)Liw{0?)$+p&0koj5}YCgrUCiDwv^QeFwku3^^Ce{Ko}9~ zuUQ&vis))emeG(z8qgLC{Y0YA^ekXd<-&&FCF*vjA0{69?CF+%tOER=mfcLo76+7z)f{CF~N zJgHz(y{veCNJ*Ll%UVV?i zdO4hDQeq*PMR2XN77v-ZxVyNP$71t8Mx2Yyul>XVf*WMv(9_0>x4W7VVBY3YwM>9v z+x7N&Uq;&ioc2a%h(gtoU2oW9qi?B)pGh3`4$;ZM@hW5N%e}MK1ZO-a2Vu1}B~B}T z8-NY`*JD|K?X>|68(!p^Fsk;hUw~T$P3^~M2{2SVff?q@Ig{YD%r={N$|ojQ z+MFnVzAK;**Q=~?sxL&L|1n|5FOmFPPaHpu(L%?(eZgi#^#rqKOcBKU5y7i466MNc zY01}MHmXniu=lSaZXE0J5eF2PpT{tZd*-^SEC|NJa3k>e{L`a*qgb>W6X{J*?Vxi2vl+*jN$qy%zN!91GpO zyabPL`T6V5-8)s^^(i3qIEr};*DUelfY2SFeVLAZS;i5S?HWC^6d0wW+dm6h7khTE zk=YNqSF@=O4h}P8E;b#yP*t(xLl%N9K3-e;K)@~F3ZQ5Cb(fBbb6jBjv3({x?{(y^ z*>&^qw3}pgd*R`T=NxaSZj&!%jUe}u@&YxnTDz;zab7+892oHvT1yJwo(&(gq=DPC zU$S@r6*WSW8(poB*J8&Al^r*J0rd9O)AFU!2Lo@q(fl9l0ud^k19=IL4fwh$GqQMo zd$FtYO9C|Bfk}Aut{2NiKk`EdG3<}IX4a32=`A{F8}zhG8!#NTC_!y^d7wF90xnCB z7EZ{V$>1z9c#uuqxNd3bk3AoN+q(-bR*oF2lvhILos0d-GM22^;HvWSYTsoRX*ip9 zhI;%FA8{IkNk>wC4u(HgI<{%;YUHbvgN-4PH#3LA{7wWqtQIBhoM#}&|6B`ese966 zJz_l#7rv4Y1TXu;*Ai+b;=El$u4m+FES_I|5lHoepu6=gEwgo^gR}9+3YetbGjrpv zenQ)K_OBK#p_uR5w`me7PMs|c^7!c1E2~DVpFyv@XG;}|>ZqTCSIgL6OmBVf`)kBu z9`eRZxmd3^HDMJDN(%loUXhxRI$E1$UbL*WR4;+V^GYy|wve@crc*>W~knr)ZoAK$_O`uMM5ccF!r?|3+-YNv2_ z%~g**jA_}@=LE6bCPDupN)O?i#Yu&7f|_uq4eIllZ5E3cQMQli-RDiJkvGx0_d>j4 z9|(a=3-JjH3mcRTFL0j+qgsm>010bd(#_QdMXl>TTm-t$bFfNZKn4EcH;K(_0^kJ_ zi39@4(;qk@rIjS~f#5Wa=1r#+7h}wXO8Pp2Zx*NYbD*)+LG?MCu-opW8u#?k z%k|KM)rr))F!&v!GEkAXRAR5bNOU(noMZgL`%lR$fTBH9p4^S{Vh_?7-G1X7vXBrq`WH8_F{7>YmRBEdazhgemDOW=3Pm)H32X14W|m zo!q-3_HO^IdIBA+wo|sSMH_31Y0h&OB`SGi$sOiFIEqi+(B4QJ_u%}FkcNbOw`$vJ zD8P{#N(^HupX7L!Z*r`dyiga_SqcmrGNf0Anq`Bsv{a#d;Q0LD_Fni(@^>b?F;HP!f!9pg zZ;^ML(W5x>F0t@^-Igo&V^y^<;w105@Q-6XC}U?X;e9I^UA^B+@&n>v4V-Nmlb=ZPJalz0(T~2&NpMKXw6h)zL#7P>crvFBDqC$csOePiJx5uWv{0 z=4}WXuHitDcg-YwK#@$hy5vKk@e}_sBJ=(!Zt`KP;Pjd16f2YqQ5o{=Jkg&z*KjUJ z@j&d2sdLB8OlE$#SahrD<`D4R0?TOo^3Z`YAUk9|L&xQaU|yR@_s3R4i#XOe@xt*Q z9Ob*svx66(G0;0cnpuSz9dmF@NSF^;QaER?p`34EqJwA;nY-zlMb$W~KAFDhmEw^k zLo_SEs%9j2+*OM+meoHT8+SH|8r(xo;eyjDQ`a8S7^$+kS-7z_%Q1~3b)f^ySH?G< zNN-D%IbAoKnl9(MFr)7YEv$#Uw+WF|+FM1u(uZ{oUr7n?kdeERSYnvDS633b>b9lE zRVAK9forxGpnK&Tl8^7Pl|=KFepyZ7gEdLBfA?wqVlc9sK2pC*;v7b7swZ69sWGy) zoZh@|X*nl=Es>9v-o4r>>Z;8%8abMh$PGRpaiqf}j&d1aDPwFJYLz4toXsRT78iFQ zf*N0hBkg1{4n6jPs+ZD({~%V$#pap(C@l1AbuFqMqZuK5bn7@*Xt$;_M|zL^H36sC z)C(q!ze+f5Hy&JeXe>U*{4>4qlQwA)M*&#FHAdmhbuUb-} zduP+YLUpi#4Ju$BC{fLT2@UwO*=*>JT5P^N-t-2_rH-_;D7?vHWv-pwy8%R-JcRzR zL9KEicl~Q@>ZYcz&e98h?8A_qf$J9yb}nA+Cb5!p_Zzkfe)rrCe>6gAwQD2g#ICAS%MQ{~%VXNAR?g{|=ntRjp`?K2K=Fva;-1=>LuK7U#NKN+C1)=8WEnb&Kx_htA4XkgPtN+zuL{zv zjFU3W0V*JKFyV6Z@yXxa)K}GU+DeKB8cg)}($zHfan3F78$ z*}rzf!m~fJQRSfvaxQqJ_s!7u;H8T5h>JsCDc+Bon9nt?r~S5|XSM)447Zbj=sZK| zW<` zV&zV?UwLe1^Ro7K^rG=noka^em&K;LigdxIY~hUi#)S001~X`nKc}>>s`KE^6=mmi ztrx!Yk*IK!=*jg-c7^r?N$a&RpIhDD=+=;cYixVxU5Az`oiKK+M-k3?+-DcQ)620m z0wQarC$WBFbZgLR^WAU#cJP867lf~fL>m|;;GB|VW}@5k7`$~MMW6hxhtW_#*fA|? z)aS-;59(}s7)RrAtAn>@QbQ6x74grSP*_Mjt{C_&O7!_gnF{u- zK5_+guLS)eH;Vj}mZaFMeC&D%bUtU7i-5-}0=Ys`rXK%ZZsA0Ph29wB^Q%17h2wj+ zei#pqk7c-hxNO$hPzZb62)D8^P)*TljvHZotVk68BlP;!Yu%qu?KXv-dvNx^tVW1W z+qM|xQg*k}V9O!D8*1E6#$Fj<~*QDIj)iUJ^joNt?k63H{0Ri7G(){fa{I+ zX7O=%{4WE4$=%)by>-|hGI*fv^kl@d=LX$H+G;t}{lfsBX?Ww9dO5nRyUG3jYpJ;W zHgoevIoiK-cwU5 zAtJMykgNO+PKe8Q!{o8q!!_0PF=kPbxRtVQz7&NDoywqP?9RgIFyAh2^yt6azyYEh z-pxPY-~;{n?>w+;d!H<=Xn!dWn>`1*SKWDd4OYu!GH5vDW=tp-h&`k82$ntrV723$ zlAs=yg~MyVBl;(R8#XR2As5TtZ6TQ03mU&nJX~c;m5T)of_BP`1Jpkve1Hzt%`$Hg z*y05JLAR5M%YVnvAc7+80Tk(K(;B4&8gVX+v@ai^o9+jVa@B_X545j;)iwTe$=|Zt zm&5<2n)aXD|GOI8|8MpGm-pXSZ2uc;*^%InDWGzIdMJcxUz-rgm9IcnXnLUuVc$yj zeX~qNB4e#po5>soyoQHxAVKmGWXKt)<1;%S*i5c<+O2QG+);@domOE*KPA6vWv$kw$WpQP~5&gxF1}p^)5ADU0F9JEb z$^cyv&MtB+KimT-IoVCoj-Twyr5rjc<9)H@Wd@V`-~*etN+At5t~D7PH6qnybj<)n zPe9eI&0t2xSTeg@3`nYG#B3AGQuH*Nfk9K;7J}kWxt-@V5X*v+IyNS2piNCpNF0US z@9zfo` zI4c)hDgPoLNRKANTy<92>~PJjGFW?H?^*oKYY$N_KH>nxbGTOuB($G4K4NH*O)X3h zkI1HeS=2VR7oCgaJ_}vAvvmj|s8!owCa%~vb-b4RCq+F#=fRH5L4FmV5nHNn-5~oa zkce`R3D+FbZAWGjT(#USUGG@CyG`c0a1!!MODQc0xzk^~4(;`~OL1}6de^?}158fR zCeT}>ojx+c@~wVNNzn8~t%6gGfaC*!T5tStv9V`jJ|#H0f)i^fv%&{w$6epACuQZj zM8qv$J6}%j^Iw{?4K$KC-tQaZ1!#X(d%*kV;;6ogAw!Xfjgus*4n2g~~z8YT9e#r8Wm54vtCqFB+-mW<=F(iL%81 zM0fto?elOcA0$=TbiCLHPcPhvJB6=AA_b1V00Ms+N1x}nWwW+ov{%P8gN!7YhofV1 zqKustMXyi1rB6y|*vsdhR(h7DkpLt0x4U6qr!V*hUY}0TtZ```IX&2QkiR15MO^DG zHxuf3A1N209%jv5kWefIdYfq*4P_{lduTGex5!N^Dy_xJ9Jq9$C$tuCcIKg|4Ff&3<` zz^13&{sk#Dk&Q3Ee|kCtZ>%@cbJ%Vmk=h#pRZ5sKslJ?GO_l0`g-O_aWF{(`#oTmi z8pBiEhPd)kUw2!H7zJxOTujjwJ{&>oild10BGDtt@eMz(CcykXvqq7FKXc0)H>;QZ zG{pJoy5SIB7)MObkCI0_Arr8GS`6lShn5w1A_!NAAilvlNT;m7p-F)4rL!Je(;$qi zKsuUh4Ek~t$JS`xK*?Lbm6C*9wsX02og<~dN1P9Lu)y#0VYs!RArdSqKCF)Wj_>A0 zoz8iir<=vOXZTMd;8*>==RE$P=A@K<^o_$s<0DGj-%Z~79opOUPMEtew?>#-;hXN> z`g4H1^UKcuG|);E)cfz}nf{NGQvauwx1@0G#RVe|4+{YQs01=LG{0JQ<^H4p1<0J` AdH?_b literal 13472 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 delta 380 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_authority/00022.png b/tests/snapshots/nanox/test_sign_tx_change_token_authority/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..31b2df9f0143e8c7840fac53daa4de974d34c5c4 GIT binary patch literal 744 zcmVP)%nlG;cl&ptz2v?s^>HobwI{mc`K@A$8f=TNEneBWW^HHjU8`8MrEZ$TL#A) z(pcI7W$ZggUy-z9DV1zCU6j*S4n1sC2G3rR?u@hJ7btlyAsrB62><{90002s!L)D0 zXqvt{hKPy#gPm5iYXDxiO1hP=MibYvst57xC#HhMOp8Zsu{}$2^bR#;WfOXr^;Z+Sa4J`|3P5THkx-Z;mCEOI_YA`$q z|Cd#??zbc=#VX!xXxANL-KISqrtWD~srB9@c0G_hOFn#`8={wf_1B#jBsa8b$|?k$ z2o6UdECa6Ih{(62_he)R_wQVROzaMOhUUmu6L(8MQqBD3RLvMF(0Jgj*fRksp1=I^ zT47)mUHWqFB(&+`sW{CjFDrhaacq`=6sv0jTyyNXb$SPM+j_Qs<-&!-PxT83>i|0j z9%hu&>Ux^sLDh(&R6}!{aIKE~#kL8^4cYn!8c$$i4A?LM2><|q;>w0Pm-6vFxUuwW zcjDJ7=^>@GX3u9NWIPF?{XdAfc0u;bE%bzCB+dB=2%DUvdmBpKC%RJnD;0zHGpqkq z!Hxaim$hEk0ry^cj7*o^4Lxs1kKoL^J%|2ns2zlj$ZSjnetp<{HFJ{^Ptq3v00000 a6n+3$qsZECxfB-w00001zT1C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_authority/00023.png b/tests/snapshots/nanox/test_sign_tx_change_token_authority/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_authority/00025.png b/tests/snapshots/nanox/test_sign_tx_change_token_authority/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..c81329ee7b83375812de54929a62bb2e32f5f369 GIT binary patch literal 700 zcmV;t0z>_YP)0AMG4eL#EaIF94ITzCpxZg2^=di8h3kKH0QL3qj?36Qkj ztKDfSrEV0`*2%UM`%qeL$4JY)4q3H8LeF4>d)`Vv+uz#jmAE@$yZ5P6vPc=GjtA06 zy{rS;*?X3m5A7_}Ne25?O{aP(%^K@faqNJaTkjky<4x?9c2{b4u8HJIWw@t(JMopE zmpQogwmi66)rXs^{B^U7#W+?>?2&7yR(){IA_vRDxcndHNI)xo8D)K3Bdbd?e$tL{ z`6=(usu5;?B+6{$geJINLu5{b=#)G7Fi!O?<@10Kpx#ZFJrQGnw~*Fm2OnJQyhlGD zL_ZQlKa#}JpFZ1cdnmdj#=U`6jgQpeHn~N|yccAMpzUJ@d8+B1b7Y6u3X_J-o)6d7 z=OCsJ=n0&1SUX;Re$vy6>{v@5LUu+>30hc=Z3%OeI%5#91DKK?POKa0r3hQX94G3| z9FPE8;ABr4M$}NRP&}cqf_n)}M*0#2(t}zA003Xa*A@Nn1&2FeaJw3+Dw;icQq?j^ z6WWaT4CSQK0UB0P>E`zM_C7#WG+E$OWwi8P{WKI!de)lcU}nuwQr{y>gguZ^lQBXs zWE0kGCG|Z7cfu}ZlogrXRMk0>Nf9r@?MlWfCG`sLNPwX}x`fH{fSzB>SD#a|!7m-4 ii0A_V000005W_$6txg0Z^5ydY0000)h!KZG>Yo>pZG@8b7~O4UIYA$?1QauV~5yp%7W$U3(#vQ8E&rI_8K{L0x|$s-Za zj2wd<+RWMg)n4tAbQ(4VH8aitkFL+BM(T0WM|orlQt?E$EI{2&K8)FJJ=#jU0jO%6 zleJossrc%4R_%tIC2F0tBSW1M-m2{nioiOj1 zG*kfq006KSBX&VG{JW$6LoYp%IU8LCf6DWgR-D=YVa$~cJuvPA*c}Kh=1=<98eKFR z43}hXYrLwxHOkjY4ray(P>~)QuDe@EV}RpkQN2w|O{QcVyWPzT9mRAJK(%c6xU-mw zx?GQ3gk>~?0NxSJxq%HLf%YST_9KDzmq9gkO}M6C3_6I}%3XO=e0~sP#}+#WsUD7K zDvin6Z@!IoUm$FxAqVLxW+W_6tIa5^5t9pAdCp# zlCRe!rBuu-_E!d%Uhoc98oGHq>uUbi;df zwx8*bQ!Q3AvI>z9k5^0>fD86#x-HquPhr9USp32Zl<3RO;uj%?wQU$dzyMI!SbU+C ztXzEdah6uERB0uPJ=CyGSpfMSu>Pa=KPq%a=BKz2_ zh2_>qVvK#U7=%vYyAk_fDEZr&cl8MkxQw1v2t*+`9Aj`9aP>l5`c8OpN??jlCGEQ) zlJ*i2yMUbdI(orFjYnunRT}3+)sT4YWx>p1RAREadzi%xNrD!}{yt!3MDLWz(U=pl zd%&Z!q4v+GGb6GFj~;+i49eM9mmo1?ackkmR-wZOOu!HA`)q0`u0 zyI7yihe-=Nk?H6WQ?IR)zgp=iW>n&=qS1d6KHP%nEYY@&TQhAF7A+9BP$!LTS&Ttr q*0Zfd(`M|{_r)0i0002M2z~+ENVDXj36J6c00003G8IiO?b9Z)AoEnW4;MDD(1_dd3XT;00000 z{++h6Cq)J9iep<&VXdUShjmu7n;y(s2MGv90)ox`i_)hWmuB6Ki%pe1761SM h0000000026k{@EXSAR$t0i6H<002ovPDHLkV1hjE$ff`Q literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00020.png b/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00022.png b/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..31b2df9f0143e8c7840fac53daa4de974d34c5c4 GIT binary patch literal 744 zcmVP)%nlG;cl&ptz2v?s^>HobwI{mc`K@A$8f=TNEneBWW^HHjU8`8MrEZ$TL#A) z(pcI7W$ZggUy-z9DV1zCU6j*S4n1sC2G3rR?u@hJ7btlyAsrB62><{90002s!L)D0 zXqvt{hKPy#gPm5iYXDxiO1hP=MibYvst57xC#HhMOp8Zsu{}$2^bR#;WfOXr^;Z+Sa4J`|3P5THkx-Z;mCEOI_YA`$q z|Cd#??zbc=#VX!xXxANL-KISqrtWD~srB9@c0G_hOFn#`8={wf_1B#jBsa8b$|?k$ z2o6UdECa6Ih{(62_he)R_wQVROzaMOhUUmu6L(8MQqBD3RLvMF(0Jgj*fRksp1=I^ zT47)mUHWqFB(&+`sW{CjFDrhaacq`=6sv0jTyyNXb$SPM+j_Qs<-&!-PxT83>i|0j z9%hu&>Ux^sLDh(&R6}!{aIKE~#kL8^4cYn!8c$$i4A?LM2><|q;>w0Pm-6vFxUuwW zcjDJ7=^>@GX3u9NWIPF?{XdAfc0u;bE%bzCB+dB=2%DUvdmBpKC%RJnD;0zHGpqkq z!Hxaim$hEk0ry^cj7*o^4Lxs1kKoL^J%|2ns2zlj$ZSjnetp<{HFJ{^Ptq3v00000 a6n+3$qsZECxfB-w00001zT1C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00023.png b/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00025.png b/tests/snapshots/nanox/test_sign_tx_change_token_metadata_uri/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f5cd68945f06d260a12ed7ba5e5d1258f66e61 GIT binary patch literal 733 zcmV<30wVp1P)wIsWRz!$@#}EMk0000003K3nt+i%*5#T4= zftj2Y`it*LK#P7UCD)S>hb5pl!yFoYIxYbhA_wP2pN>mF3vmnj(a|TOf7uS)LC->m zMxTxw0T&|N=SKf*j@$AB0001BCt~LSzUwHZTt6r70;e0C!cwpPKk;L?NZlYk<$(lf zxcBDiwAR`N3R(RWLrOfzb1hZ&~h7X!({vr`{cN*HM>wlx~Dqaw|%>a zO+g=Xuyk1-?5*j;qFMgA*~wy@m`wbVbDK7O2(_XM>xpst8x}|a7r&foeOx1JU2>}M zG9f?p`fM5z_D7;DO5V@}=WB?i32Oq|1z8!fV@CCHhblQ!Wc->NtHaqwbV&^gX z{UG|8Ao`i`=%4ph#N3^DZ};iTM>*$!bbV@qbdPaJR^oENE z00000062`zuZ!oC-r;ly9G2e)=u=WpE~Ut)pChWhNl_nln|iIOxKTHN( P00000NkvXXu0mjf2z^w# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_create_delegation/00010.png b/tests/snapshots/nanox/test_sign_tx_create_delegation/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..7c23f0654ccc3b72f5c96dedbce206405d87217a GIT binary patch literal 619 zcmV-x0+juUP)x2qCBwAORbe&NeS}ZQ% z=Xw`>_2r!D)8;=CoA{z;YRtqcQhF0zfjZE#QX1;d&UIS;h+JI(qDkXI<_h*nr#G=E zOmIiqTr&U_t!dSb#l*99n<%O2Vkpl}=txg=xF7`;rk_V|DE>MZclzs`x3m>atrnL= z{taoj_O#ZiK%DqRxyVO1VctW_AG9*Drp%1#Z@3BR#|NQJs}*e zjXz9?6jY|+k}M=vc$9yAiIRdA2Bk_VRjP@Wc|xp!#A@qz^k0>x9oGRh?O%-Jld(wb z?*POX5|KCII7@I}LTyExf-&#}(f0(=_XN@3o+Te20F7>K83S-)x`?&zkQ1Ln)BDuK z=Um3CSxn(P_Hv^x?Dnbmzp6g!B5V<*7PKu;f<^{CLU6i_rPxyQm_d-6Lb&YFR&b)0RR91z!&LPLj#r-Uo9LXU|I3i zLJlrs&R_tX!2mdeO*r-@ObJ+4e6{cdDaaWN0002&%P-C*RJ-m@HkJSY002ovPDHLk FV1fYuQVFYNuVy#K9#P@-dBoJ_#5z&RZ~jo z`D#jZLsn6_!vtjxX`XqaiDq$bnWIdo{SqfJOiL6zZg zp&K@@j`cge>i3pu(!Xp;GSCA@m!Z7{nbcuIDv#cTWeGih{LWDQo~ANy&dyX1fvtVz zQaEdI>@O!X1wDYoG3zWUmVzFDo`L`X00000cm?)zfO8K3LZ>i>-0O$%h){y9h>Jl0 zF6JA6+@nsQK)d==MV>S0N$z8}7S>B&iF51^9N0o=3fF;SOpwBU#J1LxHt=IcvJl9k z(cy@}&p=mC#Ouz455iuhaVk6Yfx&RtLgz$ie%MU7n|QgfBGu$y zMOeXRTnzK2(rB7O05aLb!)A{jFa#i<(B^`%44v>cID@eHHhA+UoVL|A!^YuM!Yq)2 zE(QSr0002MJGt3;fP6S&lH~nJ(8Ir%IXS0%s^C0s)U!_R_aGMf%E0{GF8~kYW+`ZS hVip1b0001ZA^(={s64M5l)kxI?-3`B0YGRRlofP(!`R=b%XR zj)@{syV9j-jM7m-w4|Be^FvUBqC@Fy_ct3`_+rbAO;WsF^e%b>YJj5USo>UcqJ>}0 znZ!AJ2Z;Ja_bKE$T7ot}g@3oh`;H(6o_x6-F}NAQ;fTR)z}4W5enw#hMmZJX{%r0= zxfGF{PcojSs;yrd&o<94Y{6J}JTJ_(xk%mpLXlBY(6S%^&L9BJba)?NEL9roml3g$ zIkoT-?oneukz`Fba0Qes19k5cW00000NkvXXu0mjfSa1~l2yV8}|1&fB%){P?F&KL!4 zVgtbaWchmDrIh5;rYBo9@Kw#NdO~%&*hOpw*#V;!=MYxaTD__{H3QVfRP!0M3VMXC z%DW1~ga^+62Nbl1Ro4~+Pt`4AgeJS}Lq|H&sH&@Ga5e<(3=ayspn7-A?((ju2B{|X zi|dw}lbc_)wWhW91M0xvm3R5kMYyh^)gOOnq`o0ErjFY5YTLZY)LV6XFCW;JL0Aa7 z0I>tsS=)gSbOG!T1ONa40PtVvzXv$e00^DJW2nb$2#19=q#`DR119rwK=|Piw2-F0 z?V{EyvEVxP)x!POOX3{+1824fyTbdxF(!nNQp!2s)APd~_%I_;2%=C7jt@QtriR6k z`Gcr$BN*lfsEu{fe10z;_%w0BmzqGK!LIh$G0Nh`b?^*WFthm9Y-O!hT-3it{RZ(L z=U#x~<@Bx590!!tsR4hcpqLPzECUYsgU4iYB`8*ff&X`S9iXl%*As4km)t^am897U zNyJ#;L^u(f3=RMQ008(JT6wh9_V`!EPDy?dya!AM2f!%Ti2lp~00000n7}Xg{3ss8 SJV=880000^8toDWzWLoHtrB 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 M07*qoM6N<$g3aD6ZU6uP delta 602 zcmV-g0;TOyHh#UPBE&(;fHRz$EpHlj{TfiCkE)+ESDcloKAmNT1{eRemJMsen00000@H}v) zUWO2AM1L{=0^S?_+>pNPMmlk_?{UsWe~NP!lJ{I-MGpTt7!scEji za&zuNo4&^ppMQ1fyj8Ex=b&b5@VTiv3`dErYmXu6VD}`+>vCZ$w4GLu8yU{SVGfL0 zou(bl-t-JZ(%!~S+@Sm`+Hhp|yySySyP5ctj{6jH{nlW@_)Y~w4DI}008(S#2IOU$nChx zLaw+%j|f8oLyW$?!|k65lnNXg+0w3Ud=CHFq1b$#mH+ zW?BNo=~HQqvz+$oIW6P5S&SyYE*Tn)BDE)fsiY>4smwBfhv$8&+G}QXhq zg21IabYwCXjwWunklA4w<>HQsrtwi`!`;N&MN610{C}DeEo{cMQ9QHW8m2ISB*r}6 z=*b%l1IW{~xlniv-EbP*K@5NHpc0d?*jC#P8;4toQV@b}1_J;90KhXj?0rDEIPw(X z{YXerzn8f=i~g!Wii3K#lJgc~^?zb=1m_vx$2cqmsb7pj0000059ANOjp!Ip{rd3$ P0000<*pkVu^Z_^G>NSptq$Um?v zm}{zT>HaFNMUgqvr?%!+KK7G5hDkbJC&tGlZ{hH@C{Nt!9mS4@iW5Tcf>@b%z{A-i{Xnr-w UU()^>P>hqo)78&qol`;+0E0<^bpQYW diff --git a/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00014.png b/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..0562b8b146b2b4cd58e6bf2986f51a91981c4fea GIT binary patch literal 660 zcmV;F0&D$=P)l^?8006)f`RP;h-pAwPIE62KDX&YX*9 zixOS2-iHn?#g5~$Wy`OjE$a7i9BE9C4~{H+cBE^$ekp~@uv93iL{EyeIvg;&16U{6 zn^!?nEJDXuRs$Nfi%X($0y3m+tr*{xH+EYrOHiacd_~1rE3yNsIFiCE)8CVT^Z`IA zo!OXFB8{vxuFvSy2+|_iy5+JC*GvuGw5E2h*?V$Q0?cg!00000fH(e|xtSXIZn-uo?%HOJj{>Z7BbFDRN>%Lb?N#1NxI4qg&{k zsNNb?jFLV#DlvW`GpizGTEgt%c~1(;Y+PV3d(3 zqAx|{;9{77BL|m(P(PmOoz(lI#FsW$o=nyM2Q>98b&2#Pw{AqSypgb~ejPnXSU&gu+H&ax+&lCEn*^{8!nl5m9Ym?$tF%{j-35gwVmlf8 zkV>a0ZtN=yQ?Ln7X3;%>zTTSX3;+NC0PaY+8@gayacf~43$_)v7EGxRd-#eK?d%c07;$~RhZ5i(#ildlq_oKxK4hE0RzK^NShj$M93=b~WGYdgV zWWdS6Wfm4z$Iqo8~0$W$ymnz-PF%nFxLF87#dIzGx4Tur<^XobbX zKQlp##ke-bXVzP%DH0&*OpkZ;J}Bme*aywhg)1Hy|VFCx4iiIn=a%*9>wQw35s8re$wU5M5Hh{+cAOTfcyHU+6C f&O!hH059|ppZ@Z8VPTR`00000NkvXXu0mjf6E*;V literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00016.png b/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..5d19c53fa5f8022f767db7536859d57e8c60c8d1 GIT binary patch literal 666 zcmV;L0%iS)P)?HeNl6&cc9cu*<4gO8;_mnb-M2sfabLt!b0002M6Zz_E=Dm;C*L4{s zV^7GFX6U^S#`H!q&#W!`XVxl))$?ldW>dL|Z8Uw40d_#Ezot2R@6&N_twB!#SVG5H zX7SgmMQ*6ip`(=?$`xv3#kXNBn)G#D>6l(`9GUp6r)#8gDXI4edsMz@+h% zgLv*dE2=uFC0y7_J@)4T{(Uq?wP?o))YLu`TARu1(xfM#dIG)*I#(uV^|uF1sC+y$ z-U>OZ@N0D?Y$EOM6-`zh&^gsXb;*)F*_5hoO3(Xumk-fyv+^PN{D$4_Zry$QNfDV=lYXI4sfT_~ zMm>v$q8$l37u)t|qZV1m7cLx`#X_jkbD+uLL}SL{^8j0o004L<_5YT#p_+KKv5gJY#G{QAd)#%8v|H^7J~u+0Kjwk0SoA?>%{D{2><{907*qoM6N<$g1$>J AEdT%j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00017.png b/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..7184c4702c06af62336a60805f6604ff096ec3a8 GIT binary patch literal 657 zcmV;C0&e|@P)ToM34VmL&$uQR)yoyjvIL)=~(|V?b>t{eh9M_p@TQ$Wc zkV%#!xb2Tk>~a91yecioR29FHEg>i~+1y$gH zn|V0^86`K$u6|^Zc9%HtKK9YVeCj1>9Q$H12q%S4W9);iq?dP|`5hkM%t#ahs}MRI zK5zqF4FEWVN;dSsjm%nMeE-n^KhEXLO?I#Dx1HcC9}Sv5$`5|xb`u3^MHBA@t;*-E>ZA!)CoYH%#O*~<+x;1jFZXMC{( zuJ=ExA*X_VC7M=m?M4;zmUnPUI{Khs>WiNP?18!Dwx-4O(q=Vh$@!@H^ap58zAq8yf=v06)b)W&)L8HnTkG00000NkvXXu0mjfRZ}IE literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00018.png b/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..f278bff2f38a35fe45cf2909564a4ca14c8c333d GIT binary patch literal 675 zcmV;U0$lxxP)Ac9Q)siM@0{N{EmI2E@mCcjPKamO)_roYXl00001hZ{(-b-+LdApU-D! zv>}9)@?^aC(WsOLWZuiDJ2>lZMQ3wx#Rq4rx)+sh`$88IGR;0k*Cq#at!FQMs|p zUE4TyVl@DS^s1yqrs!yq&zyBe!DI=FGo6eoUIxyk;QrQwvcJZYv~6Gk~qHdLw&^`cRj$J$MET z#|!Uu&&5`b9!q#dMb??qmyY)UoKjF^3{E7?{}D}grKHQ{X@?f?oTOQ$h+lIPRvd@- zOo;prdwM|~%B$Pa`wPJstmLEHF$R-iIvis#4RrP0@d<0ws5D-RFcy<9=enl7v+1+Q zwwP!^Y(FZGQSp%{AH1T#sfetKUHMcp#uM#cCB=y^sf-Pdx?ox9TTIDxAzCcPHDBAb z8;o_yuau*ECiS#+fa*4*G5>)^k^R+8(+tPY0P^#PP&=&TDOrj)Qb|C~QJS$qijfbv z36Ev-$2?VlV(Vg}g8!$N7t=oh|+!<~jiY0000$6Myx@?cNa&Ta5q!002ov JPDHLkV1g*OI{yFw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00019.png b/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..06704dbf596899ec2fcfab35f8a78324c4a15cf0 GIT binary patch literal 518 zcmV+h0{Q)kP)HH`Pu;xpef9^cD|huB7MepJ5a-jBL8~hOJ}yX{xQb zCO=*#a*Ze@dc#=}_Eol9AFl5XD3L)YYb3sDk~=zE(~S+jbct5=4Lf3FZL(lWPgiy+R6S# z%)w6VLObys-icH{hmXXCm2Eq&Rr!@&N&J;*|5dVix0nE>bNQ9shxnrU*a!O$Mvo?j zu1hDmWl3`W>A+)5K04`bZD<1g=Y52Ds+Ct5;`-xbJO` z0DU=BE*38iO&+-OxKEtf8`_BN@$}%#bW6#3`UPR%yrh>6BD>M+TYplbG|ay6CT}3S zlG50x_rHkzUA!xjGnu@gfqI?q2{*}ZK>z>%00000006)ezp{=S>_QS)q5uE@07*qo IM6N<$f>Pl0eE^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00022.png b/tests/snapshots/nanox/test_sign_tx_create_stake_pool/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..b3afad9ee51dddab67b066887b9975a356ad0fca GIT binary patch literal 618 zcmV-w0+s!VP)+r6F)kt_jLg-IHHN|%5N%R%1gQ@RAS5VxSGjy@56-R-~( zvI-@QKBapCDlFW2qo12}M}7bR00000zz2it%l)(*%=Ci#1a8|_KYmC*VBum*DKqmt zxdCv{w}|@M<(E=^mdrwbn?mhV)>J!vWBEw22a5^#Bfg?zl&L$qBpwA{Sfws=vK#8} zg62W*pXF9tNkz`z3#jre7OJG>bNg1ROB2@eBZlOvtMKp>(6+{82@`%ehDhw|h$0j4 zC7qhSYr^-?H`*-Dl%U-lobg)jXY-4mqsYel*r^37zM~yOzT_!C$n?b|?#i6N5yiNl z>f}rI+3+#cdi$xHg$Y<5@1AS@mvAr4UiI;puvCw%C1U70*b(i?2iE71@;Bi(vG`vR zR%HMH0090;aYnkp$py{0h1}lRmTjf8EzX~Uf>$AH(7$bw))uv{PLXSoby4!0QC7>- zw?4$tdqAXx66~wUek6&&sU1hFCDqTP>axbF>VUsA$9j-uB}k2|H8|w4nvA$hR^o?d zQ`MIgs5CcW)^qn^MP^9%VwNR9U7j_#%IK&+({7x%ilYheTZYb{N|Th2yz`anmE8DJ zw;yNq%5h+K6&I1>Apd;QyaV0}5&!@I000000N}Iu1!`^zRtd)V=l}o!07*qoM6N<$ Ef`@u3WB>pF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_delegation_staking/00010.png b/tests/snapshots/nanox/test_sign_tx_delegation_staking/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..15001c03a1aab0b9c2c490cd7838f9e0272095a7 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xf>EaktG3V{<=%S+v91gk5 ztxx`&{v_^KVfu=%jcwkG?#=lu&MH5l;p7AXpeBZSC#E~9ADa;;cl@I0wbVNseWj9p zLQgqf5;JV#NO{#Eiq%xq0`F-Ft$3B6o6sQ(xdxc6-wrC57l!?|ego3^Oy&M(ka~m0l+_Gx)}% z#@oUZ?#^aweD~n4`zo(A@#r6`^bV-*wQOHtutDKyUuw8mnTRk?)HUs@il>U(1yVLw z-?}ZdfwkqseZ%*+_lip2m$~*+;?}8+UQ$>1w_dfGD95<^Rccq*CO@mRuNQ8UZ4 z{pQS1iTCKh9 znB@G7kH^IR9o_l3*m=hl#=G_ka?;;}^-3C;mWj*A1WeOtcUvbmW!*u;?b$J`svr4Q z)i@-d5_-?*|LmR2g}>_sfzEj#_UnI#?vKdA*T;%=z?4wj5w&J!5ONlZv*uh55fyJ) faPk2#>Ysn&ZZq9J^$5F)3CK5|u6{1-oD!MglSIz zo0|cJrt#(@rNW%zZ(V(Qj4dI?`bAX);fUsBChx)Du!mv<+RK&qx01oCm z07s=EZwPhuqlmiRL_-)BmZGo3IrmjH2nU5vWA1}pdB13T%C~x84Uts{%tCQE#$Xw6 zHMkD>gRR5#_wUzF;}0ckI{q=}{xtD~N1G90{{NqV5)SXr8>@M0@=_A;qQed7=VN6TY}WQ#ifOt8S}{RtBopDf5o1BhE(EQ zVVDtXSb`1)QP2=L^a21bjq4vW#>-`95Nmo||A8DzmsuK`o_fcksS?ie@Z5h}|k`P9JQwbp!D3&8^13gKGdL zdJSU`ArqvKO4tu3r24fSnOavConIpT0{{R3000Vqvx49^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2}9ba4!+nDh2_B43jMPg|nN zy_E0vLGK^&Z<%JurgS53&w2g3Nk;oT-F;-)fZDZpRq7{9?6|RAQ+55+IjZ4ll2 zY~7-Khhz7|cA0-ZxO8H}?aJ?Q2eyfer+M16Pmy*}2ENb%p2u z^JH>0Tm{9T=ioUF69RR004j|wC@2lZ^=2=kIH$ZNux7JDg2a;fPNLfBdA$mG_)T5Ios;eMwa1#w!euaGV3%?jzJQNW!UcRKjXV$rp4cxW4B zL6zBiqZ~{*S>7b2?dr->=(AO2V9&1%aIGAsbBKm zj#(L{5HwWqn(p+!m)C6nqSg7VcLofXXL~qH5QPHtAuTq0UFeU)?8q-K^G)G~8so?f z-RA>+Qvd(}_YggCI>vm!<{c1tJPYbG7V0<-UCcCbC1qPw{*e~z0BdWf^@n);9x${d znQ%k1bLNiGdWP>(1GO*AYBTpl&CIyrWb7dOZs9yp=IeOPE!K{d-+((n) z!4uV(fE`P6^DCEr;mZ!F?3Jd!p)B-H0ssI2007{CUllD5>F|DGB>(^b07*qoM6N<$ Ef{mCvBme*a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00010.png b/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa64e576e58bdb6017ce811febbd328fb0d4ad2 GIT binary patch literal 623 zcmV-#0+9WQP)!l@cmRPN6^R^DoznXPJ&O{nURdX#Fd zRf0LMFV0;?%WJRWYkN)K;SIG$Y&3&=RDgt{#=f-L$pbx?>G` zw|NP&P&;Y$Tt@mxLsTNysOdEI^pa@~I7sK|J|Ts4Whg?muB!Q{8|50cP8S@Vs)Xvl z)&1XR{FV2~m*#IW?todA000000DP5(`+(`xUobRf*nJK4jqXBU0grnd#`e zQSXx@LVNML2&lX+uPmmbZr4w4!ZMn{0=^N=v4Ia(g3(_IMt>z3{cTWPZ3*|B7Y`l8 z{K4J%rTF?F#*Qt14pKcF(Nr3fpO4OWvP@fOVJ96q$eLnK!tzpWM4`o+T+q&I4r7f2 zK9g1(XIVBBJ~(+U8`|{Eu=SrzafN|tI!uHRQX*Z*d=fYS00000dvg7C^b6C9p@nU{ zFs&F`D8V^kF>t_Q;DE(o6Mpw5OnG5iF|_amOVDEA0002kmtP_ZJW|45s+#}+002ov JPDHLkV1l+;9@GE; literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00011.png b/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..351a884bb4e9f723427a4b70d1ea06acb689e464 GIT binary patch literal 724 zcmV;_0xSKAP)K&Vy!?_tiELI@C28mZd`00000@Qd91MN28|$9>-|C3R!v~pg?Y4Bsx)_vbK z3%C;0AXi1l6hCsc zT8PMsW7?wOgjWDJj`yuz5{0eAsH-8WB32Ek?Y2mklyOT4F%^PD#OUF)Y|*V{M(vnS z_z8y~4Y8AU3?)%$xS>|UV^j*_3hNr?A-oOc4lcU<#@1{VMsLDIiLvt|`Zcwrq-TFg zjMuu%o7g~`{pksWdc$x0RR910001dBmGo_C%XWlUl^mCTZS+sa9CI`y(CWG7mGnSDZCrL50-L#zjhbDBLpWf5`{n(!hmBA zP6I=IAp*xzz8?D+S@e(@7{?9~xd9|_H1UEDH8Vm_s?xb8NJHZPvs^HD;y(56++OP!2|#R0Em;j*&;cBT;{h!+J<$WOWcIZ^Y!_68)C7@KN505 z+VhK;7u2$n$6xUkRQvIVj0=(2PfS`D#E0HPbNBt(^APiYVgaqNrok@bsTFFp+mY?R zmvl9U$jOE-%9B*(9*LOxA8tZKTLd#COh7k^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00022.png b/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..31b2df9f0143e8c7840fac53daa4de974d34c5c4 GIT binary patch literal 744 zcmVP)%nlG;cl&ptz2v?s^>HobwI{mc`K@A$8f=TNEneBWW^HHjU8`8MrEZ$TL#A) z(pcI7W$ZggUy-z9DV1zCU6j*S4n1sC2G3rR?u@hJ7btlyAsrB62><{90002s!L)D0 zXqvt{hKPy#gPm5iYXDxiO1hP=MibYvst57xC#HhMOp8Zsu{}$2^bR#;WfOXr^;Z+Sa4J`|3P5THkx-Z;mCEOI_YA`$q z|Cd#??zbc=#VX!xXxANL-KISqrtWD~srB9@c0G_hOFn#`8={wf_1B#jBsa8b$|?k$ z2o6UdECa6Ih{(62_he)R_wQVROzaMOhUUmu6L(8MQqBD3RLvMF(0Jgj*fRksp1=I^ zT47)mUHWqFB(&+`sW{CjFDrhaacq`=6sv0jTyyNXb$SPM+j_Qs<-&!-PxT83>i|0j z9%hu&>Ux^sLDh(&R6}!{aIKE~#kL8^4cYn!8c$$i4A?LM2><|q;>w0Pm-6vFxUuwW zcjDJ7=^>@GX3u9NWIPF?{XdAfc0u;bE%bzCB+dB=2%DUvdmBpKC%RJnD;0zHGpqkq z!Hxaim$hEk0ry^cj7*o^4Lxs1kKoL^J%|2ns2zlj$ZSjnetp<{HFJ{^Ptq3v00000 a6n+3$qsZECxfB-w00001zT1C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00023.png b/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00025.png b/tests/snapshots/nanox/test_sign_tx_freeze_tokens/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..567675fb363e991e1c6ec8eea44a39aafffcafb3 GIT binary patch literal 596 zcmV-a0;~OrP);}r*sKuA#OoW9epDDTHS#& z$XzID^eNp6*kIw#8~xm*JMsen0000006rL8U)Ixd;MIcqq?J;(k5@E+R~FH(kIw1E z>tgz)f1!%tas62LYOOz~Thcy9RBduguR6_{lH822g~iq!YfIfiWUfbT4cD@!tfrb( zhdJ^tjh9jaYN$Oany0?Is{6jC8Xf9J-VaF@mYv?R+IHmHm`UnKY1SC#Vf2Z}wE|j_ z1KZXqljk{YhQWZHv_ zz2c&#oP{J3AL@f08o5V>EIXUHR)FVMW$v+Zn?%f}EL2~H)wZf-R@oTZp;=bHcNZFX z7{@+k}MqG{&HS})Tv2pS};5uqDJQxCU)S5>P zy_>~1VJ5QMuuUe^_GL*XMI45Eq8j=PPb8pi7jnrPUrFi?{ePKKwGdYMumiLr`Tzg` i000000002sqxc1`a_XMMh>|1#00003d#8%M{1*1l#QJsM%Zsbc z)&;E8aMk@SRS|scLHJsA-&q&)`;4dFmP}N3@LKtufA1Ru5ytvn!@lO~EB^YM_R4fy z-QXyYTJY3F*l!>2*^Y1KZz?IDPTHqB{IA``;)1`=Q)3``Gc1I?tN(%ePhh zEZ~!haQdRF_-mTL-}ei5);BzLKCRRIR-9`(w`lZ!&T0n69!G{`fddjOAKZGkv)(b* v0lB`Q3C!I5Buzw2OshiJj18d-q3Q$w_oHQ%!GG_XgYF1DMM=ju;r>VBE?qEXs1O)p16K0hrcEM& z_yS@?oC5#=00000006K_2qA>9JBk5*b_Z}Lwxo}IP6Cqp-uu0g3}Gw*wH?N&`p#Se zA|eNN)pzC+kR(o`n^xaB_u3u6JCwVSQT3g<6%Y|}+g0B-=6@df0RR910G@lM-uJ8^VBuCn6#TWNfnhML#$YvWIPMauSb1Jz#4 zN7b?x^WxH8(tqJdv5u~Tl(t(IP-F1wyzX%n20e3SO%8I!4iUi+r#YDMwVb!s-t-!d zd&wi2dm)o=Ca0Dc4Q_W_!*Om>q33ID=)yLxr-n;uAl^|eOS6k9X$0_;WD8Nax@utZ zPWY3U^{WUm<)5-P0RZ63`MRgF?E~H(K!fSO4J{vsM1PG_JQY!N0!Ye zVNt1XBQ}{K-^XIC6mcr|=#|D5_gh$zfV5qxWy{(}CE*YE|9VR;dkEvx0Nf7s0RR91 g00000;1{d-1vsO)-Iax$2><{907*qoM6N<$f&!2TOaK4? diff --git a/tests/snapshots/nanox/test_sign_tx_htlc/00011.png b/tests/snapshots/nanox/test_sign_tx_htlc/00011.png index 3a161194e8aa97593f2cd08994f702352935b602..f113d41e454a8b11fd76ba1a62c00a523445f70a 100644 GIT binary patch delta 613 zcmV-r0-F7*0{sM#BYy%!Nkl22t{pAcjEq+l)d!BsdW_5NeG~M_se<+ zT1ZeCH3R?v004j|@}=C~aU3Cp7-LyZg_2yEB&)}>OshOsW=T>5BUUO=;76?`hRPp3 zFA|D}#Q@whl=2hF?E;cR(4VbF65GkSdIng&gZE&84<5F*O1Mqy~2J z3BrSra=>*Z000000ANqr**fO$dXOvLs;~;)QxV$(2N(kf7y}0w^Y4J=hOc!YOud}- zSD%Kyb#4zCML{cOm6B_e8vH4f33U%=#9j38u@_I36)FxZ43@>o(U zBh^r;%3FBZKON0GyLXI94TD)wDlp@1c()p3nwc-DCx6czWAgTu+>3cow(Y?FA;>xQ z>i|P=76SkPv{~!d^Ce;I+dH%PSjM-dRB6azl9H+E-AKYKVKkH7YZIKqUQIUFip}I` zug<*pkVu^Z_^G>NSptq$Um?v zm}{zT>HaFNMUgqvr?%!+KK7G5hDkbJC&tGlZ{hH@C{Nt!9mS4@iW5Tcf>@b%z{A-i{Xnr-w UU()^>P>hqo)78&qol`;+0N}}i%>V!Z diff --git a/tests/snapshots/nanox/test_sign_tx_htlc/00012.png b/tests/snapshots/nanox/test_sign_tx_htlc/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..195e6f33bda33764f03395bf6efd57f1c68be57c GIT binary patch literal 615 zcmV-t0+{`YP)JJkWs)!`+ZGe2$3uS+j2u7gb+dqc_OdL<89j(LWnV@ zzxN+0(zsh@-Ni;bPd%GvnOm_;TeRnKe5Q?5AN z4a6y^LRzDxI!lX~WrbUxh)O42^B5W+Q-w}Cn+SfMNUsE(cR~mugb+dqA!Ukh#4f^ZWsB*q;a;K=gRfvqhm~iG`8k}lE z2ng-(12AR9MWZ?brmVPPR3F#nW+EP+o>708oH5yO#{K=f1l4@B{z~kWh3> zz!Cyv>Y;f|SSykL02d&kpc;BH1NQ(5kc1Ed&L7F%&M!J@8E60i002ovPDHLkV1nxr B4(N&hzBg z@q$Bzv8HHFbyDHk`g$SB7IQ8k9SwLbm7=4yr6PEA`Ms&fb%?;^tHjsrrblEygRntY9e+&+$_%&}4=S?n z5!@r~pF31V4OBhJCvrGCnGKg??1!g1c%QI$1!C}I$y=~DjfjCU8HXbVX28`OgKrL| zQ%!av0G!JC0Pd{x;YIwamy|xh*M%sOOKrtPwQcpjQiH{FU+J_#)|hKFW)Q1|Rhhc{ zj6RmD}4hKMTR`h36+ zxLX5CTWkOT004lYH2t>}SJ}i{8`FcUY~rnr$>Q!oEbXvkvpU|4@f84(K3a>7F-8Hn z)P3l-WBuV?aAizA72ztIcxz(@;3}JVYhwssYruve00026FMr@!bBIbSlDq%_002ov JPDHLkV1jFYGcW)E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_htlc/00014.png b/tests/snapshots/nanox/test_sign_tx_htlc/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5d509383a028a1297ab763568231ddb3a8c939 GIT binary patch literal 661 zcmV;G0&4w;U=qY1l2}`y>P2a+hBjv(9Bv~$j?zQUJmY{E zBcF~zg`u`zNu#9p_(N{zJJ@WValm<=Q&%6?U-eKH^PF+Qi?*OOd65HF*zq~5JD}XA z^LD{Ece0ZZ0V(_v%|Y=d21HB(yZPI}yD)Kpi6sC40000003dTw5hJNuQmjaSR?APM z*i_c4xQx`1E7`!94yx&t#)Z^4-fJgg2osZWe2w^5T-P+FWR?R`tz(hY%2LJ-IAy@Sv^H)sXQ|0`Fl=`t?{O7QK-4 z930C=r|s$9g@7TI35O5dz*H}U_vvUus&9Bvajry44S}0T*_*a-qs0@ym}?8o*011@(4KIweo+F!F>v&;|hR+qw5T#qKsNJ-w%F#BwF7k&vY#hB|poY`%ownZ`1?Yx^MF&R-^! vc3TUF+=;~u$j0000005`q?aQhOWwfL_m00000NkvXXu0mjf1yD7< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_htlc/00015.png b/tests/snapshots/nanox/test_sign_tx_htlc/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc12d160393b95670f6f062c807a7f837d0f3ff GIT binary patch literal 648 zcmV;30(bq1P)0i%Hn#73N@?3R zdVCyEvhdJk#j}pAoC>qDT1gg4HCE53dAYSzg88GQR##wNtSd9?pZfBneET%xk7_}6 zw7GPr$bb1(s#=SV4(L)3000000C1vh0r#QUoLaNm z)};<~?``NeVLSC)O=LbEj#k6MC85k-$wZa3H4Q8u!Q|7#PC82%H1u{n^&wxH8CYEY zQgOS`qIR>lZG@PDBHm49`t~-21Ju-fSo-$%&jDjiu#^vI*;f{I8CL8GNju7tu1sjD z(4uLtP-@=qtr5ObnCRAf62E4L^#=kUjO3r$;R9zBgTn`Iz|_lQyag(1S3{UGqHrpC zGWRdl9$1#qn@SYO-v`6Cr(5EVY6LWucVgvVTIWPjCO@v;k8P35J1x2~{sRrlLbLFj zSPp3ZLS|lKIiSMxOn(r_0rj|}F(hdjDDoq~(r1Anr9x8hF@(s7t&Hn;!p+RP>jVG* zB4c_67^mR-nf=OIP@bAm(t=x@*0Q55_`%f(RWiPa8MjfY!OPPBlJwdL6NKh#X?zpj zwQaL%hv->Ei6yQtVh?+X?Sh{J*hV>UU~)i5tHB2?>;x&K5_Z6ZRKJwJRm;j#0VVRH i+!l}k00000)A0icm&>3oF5eCS0000^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_htlc/00022.png b/tests/snapshots/nanox/test_sign_tx_htlc/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..62b7685df5d13d38c7c1b9927260d75a4e482cd4 GIT binary patch literal 752 zcmV- zX%l^#ODVOYrRplb3Z)Fykiuu8uJb&rarAQ*)ivGTm#PkX+*mSFeuS??T`Jd*sSiV~ zXTypOHzrxXQol$s*`jKdRj!&hmCPAn!JeuPVK%JP2d={E++uTrb&|AU+^5#0>1O&2 zxKIad1jliXyR9m|a<#3jp0ilg0T=$t%V5in<33*mGomNm25U$mD5%ZJ8Uq6XRk<4CfM-{l)RUe4oI;C00000008h}+Bae} zP0x-YYU2J7rxoiOK-OhRxBAs-;$Bwupq~BIRIr+9iHHr>y^B>Up=2CW;U|Ze@eHfl z_W|^t@2_^u^T=bY`k4XEbZ$-CMznWdonH;bTe+iE)YTugsCiG_7w)VQX^L|-m>z`x z%PLy;rz9)Is@`l^*Bxrzrac{|?rBx6^|?vxdLh>=`I7tG6utCoyzaapxuI24Rv{2X zaX9*58F2MRWWF7}CnGC(eCG;ua(CD>G-tk=xLX2}YL+jjTEtKs*0c357b%>6s$W1_2lz4Y zaHE`6H`0U*s!kN88k*aLdv)Y5woO28$ku<*cmoq-z=jD(0001#P&PEUl#lPhou%Kp z6TeqU52chfdp;*26G;&5|3M|R3-VuXp(iXSX)aGd*yJ4D+feF0)s^b6RP15i|5M_G zvh*PKnB%MD8fWb26Is32rK8`r^2oJUrRVMF5rTO)@QXr_g|viyV1-oPN}XECI60j+ iFOmKM000000F`gYb^33gGfq1I0000^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_htlc/00025.png b/tests/snapshots/nanox/test_sign_tx_htlc/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..32f349ef4b4255ccf8d90aa18b4493f054fd66d1 GIT binary patch literal 555 zcmV+`0@VG9P)c<$@X3~YT0&J}?PSp?Y3Xl;s@T-1sSAZgM5#6==A%w5h37nx_ zg`BD%+}!~gA-7-kedF$t9{>OV003SL+n4o}8Vq?sbtPkr`K>!+piaBIR_!KrfI@_> zeq)S3XVVUCHqViMd@6`~%;+dr^n3yAY_?`lJ-OPv+gnP^yLP%6pV$qTlSen|hT6X; zWvI1}zcv1%SEjvw9iYaG`KU&2<$SZXS9Cak2b8&KXxf#K(NSpT^^t}m;K*FLrv|lR zLrc(Z4QBi-*H^O_J)_}T>P+Sy$kdC;ZscIVCXaCs*DNzD3JgqZSAxi!@voOR6SN_Y$;nUg9tw;mY%XF4STi z!8YK!uBJA>dCRhRCoG(L8?nfAwS6qktcYE?yNaRueP_}d;En>6l#xQbAF((k8!^n$|~Yw&cKZqtR_@Ri(2dNij2k97@_Kwhrdf z0xET6G-bFOJ#XxtXDG^kOal1SE^(0(zj=robIisPwgh#oKbHa|m8!AcPQl_2^nLG;0g zt7D;W>|n&{G#1wa>yaB~Vwat8LB^V1)ygPWmZjsWfXYps76e~`QwQbm`xN?w^I0|n zsOI(Zefi32=$qqCtW1FVZ1r;P)AZ60(hj@;udjT=V^gcg*t?aj$H7l7~dE2)1a7^2ufjSvxIG7TN z9UW`o@4boKG>4A0X0v;QR$4ICDBY$bZap9i2UC(ERx7zppEU#1Jk-sWvczy6OZ#Z4 z$24*10isQ?qPQ7QJxc2`+M3$jotjs!n02W%EY4qI$H4(<*WT@-CH3m(b?|NWvau(4 zrJ#ZQbI3rta5fl*4@}I=9_EgN1LBL2*dmiiNz-uVgeN^4`m9{ip-w4xNp&*;mIj{Y z<-p+ll=sR>^LOGhXafKM0001V(B2U4y=FbJV3$7+k7Ye$VKCB1@o&%22`~twyG=&2^$-a{jLWr%` zu5f@qhhDX6OhXqO23HVfAHa|@dJt~*fL<0{O0D0fcx?bhYiao%__^# P00000NkvXXu0mjfrV#|C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00012.png b/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd682904e005d9a013649b41491f216a892c564 GIT binary patch literal 738 zcmV<80v-K{P)0> zN;P7Pr<_yf36Y$t<9Sl?US4DBIuK*bpY!Uv((mI9Nl$l4&Y}=K-vea`#qLl{Nqr~j zUF&WsJrMJ_(CgPT}$Y(~I<|LHOi z&rBx6aQ(vUBFRpZaLP$$LheTMg1Ijymo-gDP9Za|NM1qI9yw3B%dp#y`6aLCqWPK3 zH-MEU00000004leGq@wRie}hjCgKk|Ac0~badQlUah}}BvP$;d6Ru&n8L|U^4e-3q zwJo`+Un%J>-Rc2>UvjVoeSZzVW{33`f;LzQywFMt21gsX0aJefy$9vGB-=_Lhv|r( zSNGOk-h?-4n{+hV%}Xqc1(D-fDW!P&K9r1GjDyNTCKbNRyJ`q;Ly+(!k5=}b}SmxVT(OikoRB3Ddri6XAMEYLD z$lDVMv4!kCNRDXc-*3=V7udTSDVtxCuqdyWR3WIxAE8!|S7iU<)(jRle=7rU%J8Hh zR;h_nzP^fqaqJxns`)YAn;bMD6_LF#A6#QWO3&k_4AEqXRtut`R!*4TD&v-9}0&4htH^FgI5r)%vPMVcf?1ztxcc<8#0Tz**|0wwVh4?004S^058?t U{8qp1`Tzg`07*qoM6N<$g4^|2t^fc4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00013.png b/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..6d1bc9a523068b929bf1813e6ccfdba31de5f79e GIT binary patch literal 799 zcmV+)1K|9LP)}yEDR+C3=?1qW z8n20^L9^iDcc9E1X2w`-Xf5-;@9lN_bHL$8v;e2A_3%bZ+4sF(Xk|%yo4+QuIe9kC zfm*w0A^N0Qr1b#uE{G|F+G<+Z_+6e;`^n87F)-X{Q=AcMyQ%0~mxLZrUD>3!SbLJt z&?ycPJl;{WA;{y5H8&?A0BzSk+J&ds#n1bYXtvI=_2)$%9^?!`1LIHVsd#2G6K=f@ z7pkjuo>!DhLIB#;SZxcEQgez8CoXu}yPL0-H6Ls|gNbL6n)L>JBPmPXMZS&Rm6QOa zcmetn?Wq@m;Sl#ZwT6kldT=Y zf?<}3D|Of5T0z2)<83wAxGNgrMeMpXBV%qm6Hf}@Y5M^NS-q9NSy9WEzngJp1Yk?r zzTmxkK+|3=22VM9wOLMt%qX{55DkXn+B)#4NyG1jw%ILCs$I9phMM73bd#NDwkIm_ zkbtwI?q<|Wp0{}S=U|5_wek&=mC{z4>+R;yc9$XCL=UBVlWLf^+No3 zGLeYYRg|cNko@8@)OkeExb==H;~2Wic^$^EW7idxXzsnxI4ec$?7;H`K55;2l@=8G zbo^$#0WdUi5wyD#Zvc$rm}{zx@4~u&Q36l2m5H{tDGfYDTNsdAe8_WOz002ovPDHLkV1mU_ei8rx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00014.png b/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..4c43c012e7cc7a485775d524fb82e060780b6cbd GIT binary patch literal 559 zcmV+~0?_@5P)l>pnG_n%m8pe|X-BQ;%1NG+2P}#5cPoU6P`6sub#f z`qy3xiO7iAD_S#MbL_Nrr#8zm@g%3q$Jyh0ZcUrnE-|7|Yiraqg;jmRjf+c6X_1(X zsNE(sdbjy*46>vEea+*37npCT+eF8#!Pa=e%syd(UP^;ZTzBKlitfHk*hlxU3rTs0 xhx*!gOluP@6*XsFjSc_+000000001<=NqX04Oe&gR9pZ6002ovPDHLkV1gGc2vz_9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00015.png b/tests/snapshots/nanox/test_sign_tx_issue_fungible_token/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 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 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_nft/00012.png b/tests/snapshots/nanox/test_sign_tx_issue_nft/00012.png index 3a161194e8aa97593f2cd08994f702352935b602..a9bd3e270688a3d7e594f9d10180fefa08ac4823 100644 GIT binary patch delta 619 zcmV-x0+ju#0)qvRBYy%)Nkl@u2!_4)%ud|@lHAKYbcXQ&q9vB*|Gj03 z28xDO2mk;8002AkagmZz3L(T8U8EURP%U|lbgKkwSV~D2lzCM7l#PUR^3yM35)2K> zbXFv#Bo(S!I?v`}1Aha^CoHAJ7@3-kE}6?8I@ChLkaFZZNPljOQFbU>ab%1}$0CbY zi^yR?rOq1lS|cT+3?S8ED~N8{*^I}o8n`5o$z=A(ozGd}E%+ON^)EHWE>5_&?HWVd zGh_r@@IUR3cY|TnDh93eo|%LxC(Xm*Z%$^*O<$-Adv(B2n{>m<`<-}s^KrAn`|&bB zzYqWb004k(@qgJ5*oRZ^i7mlhaDvNgf1_X}6j9o~*fvqZLMhe!C&*jCqP5#55;B{- zG!ltX`vGsIaa*Y!7{HUmJZ$vX2K(k&2R3adm<=TP-47)hyAUK7iN+qEItd$!{ZDV{ z`|Z=qCW-wVV!u@<1qN}9m~Yi#fkB-1LckG4;jqDNK!4Q$fJsX3dV|xL&@Vk>0QzS`NgZ~E9wk2BUBxs(xt`≺B4q#hka-V~Y+c2rxX@a(VWfzx`Kse^E4+?fKK`a_LvCf7^j~ zT#YZbF*3lwhjaV#*RFclv~ZdGZntHnlI%87Pp*GCA~;b@P_TW|w`qqbq|N_Q(JxD~)}1x(F8^SuePP4lz};r~EFVdQ&MBb@0AM(QQ~&?~ diff --git a/tests/snapshots/nanox/test_sign_tx_issue_nft/00013.png b/tests/snapshots/nanox/test_sign_tx_issue_nft/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..b9a3aba0497a74520f4d3275aa5c5a757443b04e GIT binary patch literal 596 zcmV-a0;~OrP)22t{pAcjEq+l)dyLJvIYKoCF4p?|w~b0uCr7=#&Bg00026B3~w2wrwk=)LKon zDJGhgqs8{G9%NwKwsDDgnP{S2#`Rp_=jQ!+81ZS5qNT)74EE9Q_hVom06tlIl3FWq zlQ_}1e%GbON8-x2lipe@aTAviS}+C^3%~vJ7QQU*g!9@s30^5k{HjHr*W`o9zG%d2 z43`BNs$%p$_A5Yl`bfcSn2(LH4`w9xenWCeK^OAR_;)k(0&(k6vuMTRVK1f#w<}v6 zE^MWHOt)r2Q7*0naa138_ckK}Z6YZIPu&L2VkEWFg+7$sB_$Dag<%yc1qtV_Y(2 zp8pjPJ1@L9VaVEwE%-;%UriJ>Bg8`@`e6_vBpRkD!Y_7H<-~RPb342r2x1V)i`x-{ z4t+%bB8yI-sxZOfCib@13xD5dS0N{yURt0U_7D9+IS`}D3 zgd8P3qI^`7o!GW*ddGB|TH&&dl<=d!-;0=su4NqzrEC?evY6(y-c54gk^p_n)FLs) zteR@KWLEw;P3;74zoKJ|SvBcMMv~FlvFP1*cPTcDo*gq|XQ(-LLHbhLH;T zrnt>Ov(WXJon+&1CR|!TyV83GOyO~QN4cJiR~IzU|MXv>cVdd=JAKW&Y!H?$WgHHw zy?a!&9HQ8X7h7lXd`|eAcEbLb&A_)Ni0002s6ZtZ+a$Q#lA;xH8 zO{pT)lGm6nl^_kft}9O=mPtCVB4s0X#(2D0-Ve&~@$_o8+$K>XANTh)uor+&mQqTL zk@R1jXxzT-ttMKl-c?q7PqG_hBpu@^gd|4e!orJJi->w(FS@D=%?qH;ECG0z^iHNr zdN!rcRe=?o#4OP%Uwj7a>(~px_cw9JQ;H|d+cwO+CQZ2m2G*bUzO4~P*%)jauxAra zInzEIUVC!sq0od>#nZT0qj-;sty=K#eM1bF@=3eG{V^24#0~%e0002kfZ@ZO=xPp` zyDiV)QhXr4!;aD42sGHq zzhQ?4ixCDK8Y}}teH63hTHv8&l~;ruj^^@1&K~dK6a(|AYQ!X zlx`|QPHvSPcDx{IYBD7rs3N{UZba-6w^O~^jW|h5Gq;*~*tqhct9B)5Q_WxPe#=$D zB4=D_9orix@!)`2ApmjgfSh&iXe$lK0o&6V56I+O8UGw=o3P>f(_373vJN|Cm2G?- zYt|X(t65j`J|!aNmcwGg;v+l&0000$KQ{lCvJ&0lO45NnjlR-Tz>C;s4to((IP@Lu zJ^~y!^iS?1fZGG;_s3hDy$fu@n>p`2KxD>m#{dA}_WS^(q(?Hs(+x!c000022t{qr?8N;q$-VSrdZ-m4sAx3v?%yPeh!G7k2>}2A007_<`ErqxQVJo&7+s_( zO;9U&i*!q(P%NcXt(X^+$R&jKdeM)j>xgg$Ez4O!)y-V*&qj-#Q zRg0fWi!S)j0Nv=81(R^st&getOmRUS{>R?E1p`xUV$x3Uo<*2S(mEX2WS?PZYC>{2 z)d^ZvX~E9>nRq$$sSCry@fv_}ApigX006**viH(oVf4F`RB~rVTMeOz;>ERzrhxNe z?tKnMLlMSDJ0HCKFn|w?K2*j7gS?C)xvG-hsM3Tk#DTmSu1D3|@QWQ)f@%WYI*I~D z_t>q5bg{rX1L$cjp4`REb{9tZda))Y8(h#P(U0+?C`(}6a&Dm%vn%H%{IL2TZFg0kTcx3Vb03j9Loa3{j-Sfp4Gb=fF2acEuPac3HCdBbB$R5Mk zljCQ=>G8qi2jETjS?TSZ;ez_k`3~I|0RR910DL;Lch(C+nEF4trgqRl_+>W0NE>Uc zZ~xgXc94q~u_DqUWhY){RZ?}!*9xdgk;KXW;wn`vRORWL#zuKB>}jBheUqj6t*|L& z^RjTaa7#9)rFG?0r>W7VG$E-xF+CJfed?3a6aety`~U*U2n+aTb~gY3002ovPDHLkV1iN)VBY`$ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_nft/00017.png b/tests/snapshots/nanox/test_sign_tx_issue_nft/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..95bb380151849cf44401ab371331642ceada8e07 GIT binary patch literal 674 zcmV;T0$u%yP)z@sNf~}&r`;T81Ob|;v4_~006)f`BEt*gy5X>-m8?x zsEArpjqz5EtYRUAn3BrUY(*8R?D!-949f2VV?LTr^MnwnL5t4L{5R+WeFxCSQcLmP zXJ%sBV_LpxSEDsC<=d!S?>%izyy2oVgaZo|zZA**oi=LMK7{twGsDUO)EvBl;w?TK z^URkHt|_H1=l!IMz5`M#(3T~cFeB=9>&C81COx2I{E1H z{5*U#F!i%(Jv5i)%q}FEsVu*coyn=EqX#2yx<|}M*wF!eursFcr@ltC-#niBGFdj5 z(6NP&bQWF0r?eJ0hpl^ndS)uMysCom;Y2z(aQB7vEo~t z)ONLhJycxs!Gb7~if6L)XQn-^YAmW4|6r6BpTd>wZW5qvI*8dCWt11rhe+kx`{JXD z0b0t8P(-oS2i1?hXw{0z+*GnWv$+F=BhTj81!yNlL$%_L*|!F6KxYp~r!so&t|no{ z@uyY1V=HDnKs%|$%!#cpkKpU_=na`2*lt6Hp|*ty005wmU+M^v{EP@;%m4rY07*qo IM6N<$g2P=w8vpQ31IlGw|9q(u}H7ZE#@#drqGU##k3CJ5ucyAZ7L~m|BrJmuwCcdZI0GBOjVE^flyGMrP+u0n&}On^y000000006ih{*?rpoiAiI%iY(!S^^dd{bu0=C^weFf|*!@a?DmGtDM6e!jmnt1@(Lk-1Cto00000 f000000B+_Vb|xV!2h?PT00000NkvXXu0mjfAXLUg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_nft/00019.png b/tests/snapshots/nanox/test_sign_tx_issue_nft/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2?%Y-9Bb+(9QVC z8`A6-)R(QGG%x!>EqBmS0qv7&zy0@2-Dz}2OoV^kvkDGopj|+4;O>tsr1D4pN-`$FTW{Tw?@JK%IBk@r#qf! zhBqWyJx+6FFVdQ&MBb@0Cdcl4*&oF literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_issue_nft/00021.png b/tests/snapshots/nanox/test_sign_tx_issue_nft/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6f6ed7ee07aa5032f67b80e48be4d28a6e93d3 GIT binary patch literal 554 zcmV+_0@eMAP)P{2gC08iBJ#D`fiv{G zP|)a0xD`-P;f@>q*n~Us0{{R30Kf;s^<_OZ2R>R*o6?k0`4~X3k*aqX0W>p~H04*il+3riV{zZo|){ePf_$|!DX z=y;LV`Lu%mVE)Cj(D&aOnD(kRP0Ojzrej{u&pLgF6;Nx_rEmr_H0yd#LuD|nm90Q~ zEsHi#K3mW<2X{P{+urVeVEWQJ@X!mHb~Bk;UNpGg@W~9hoq`JEZGB+SqBeoPNpG;V zZ?xa{X3Lkt?Wmye4yz~RJK=ZY_J2jFl7IhI4*&qK%*P$ZmQQ%O0|OSEf|Rsr-s4QU zbdLgR4%$1Q#@aLbP27GD=p{+%0%yvTTe4EykJ(mjWSBDF8MiL*L;~t|VXBo|KlS84000000N|te1)jZ^-LC4pEdT%j07*qoM6N<$f<9jW^Z)<= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00010.png b/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..ac31f5f8c467cbdf4e93eb888204c6c8d7758808 GIT binary patch literal 649 zcmV;40(Sk0P)ZNjJK6( z9V*GH=wq#N!ywCsDJ5NhmeAMC6HtNHYO z8UK44-y-gsepOi_Zp_l8EM1H9*g3ft+$^9Zzx*T15GPAquP^1lNU0a5| zlQq=#QRg3u!Zx8^O|0q5Obd8aWUR0q6Ba-*)1NM|Uqa_y{JI}PnCY)4Nn8cT0;oV9GF zSK@Q7u*OTN2vB3-0_fL}dWCbCkd6+RdV<3Ou$#hCczgBOpmRInDm3Ic^-ruFg_I@E z0Vnfz3=sdX5dZ)H0N{1*?}QgjD{d`(#)4_Zt%W5xh)o6yFc~bsWDtbc4#JcL(~4UQ jFW`bEg9QKpfOGi;fa5WkTL7-(00000NkvXXu0mjf3Hv58 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00011.png b/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f6c802df61d318b4713f9ee17bb33e82157e25 GIT binary patch literal 608 zcmV-m0-ybfP)vQ z43|(<{AaFk!%L=$F-8)K)>B>nrCh7weK=2#G7&-$MzkxcTFth$!y8roK)hslq3SmC z=TR=Bx{SXnlBiypn$psAu8h;T7W#~U6#Dq8k)ax*5J0$=XrgTWwh+5fY!;@BI*yctOFd}i+w4XD`W42>Z^$xZf!im z`1vmav?h%C8&~B@#IMJWt6Lz9M5jmKNDl`-C;h6~a28`_j^3)TLEX~*=C{L~Vhuo<* zC;_83=RTL*Wi@o)6$zM(1WZN(CL;m=l)B|#J+c_Uv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00020.png b/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2d6l<9*%qWJWs;SLT^kdbz9vWAGxXfwB+1ri?dw7<= zbQDiUi|fqLG#)VcmQhXu+DjCtw5$Max;DG^0mC)T*qVE{sdB|+cRN!g(Y^&;L;oRh zjb<|~TTuA`_6qf^#Oe?R+Q!nO>ERH;9Rb)rgm0ggTOK_UnSy_~sv6aFZo5v+s*bn` zmuEoF>oo|~AYGvFbov8u)Jy;X0001PhU-3{ANE3aNOk_QzIVV`Td#KP8FWs@7vr=# zey-8eTc@%@pcVSHzU7F9;C&X2wgQYl%74W+Ms3{R*A_gLiBh=$rpK4C8fbLIYXc)K0m z9|&SFk}tO-1{WhZ95J{Ixcc$n>jI}!{U#3rkl6A2fQ0eU$z#!KjkbuPypXXSyMowO zU(^~n3#H2$HLm`F24IY@h8p;*Kx(&ms|84{_{@5V%~mm<$gzWo zFR8}8Rh!t$p8QV07*qoM6N<$g4M|{+W-In literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00022.png b/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..342974f533a0017e17d6d018c854400a29eceb47 GIT binary patch literal 597 zcmV-b0;>IqP)LL z!z7W!7>D&6T_j2FZdiG4SW}g|laD4_HM@QejBJ<~V;+#aKB6!P>uBo__aY5ibn0#l z@kOz%!Oy_pLM0-KQ4oA{NGsIZQb6tQOp=|j=#r+++6Zg%rg1%t%z$D<$cVGkPLbNw z*1dQlx;W1aoyG(D$#EciFY1?c&w$!+ZMq)DFwHQwPS5a)lSwwr=5|I&VlV}r!|_F8 zmd=Txu%kN#=?AbEI?pt0c41IUEJt)Y2R22g*8$s$@Ykj~-^nF$r@=q0rZ%b5nRA^w zwH|qqu8VnCuK`DXVc(smlTK4|U#2)<%18hJ0002syYTLaC5*y4LZ`5g;^q#*VWH;K zElJSefDiL_0F|TDkfwfQk!S09k#+3S!u-`+;*5R&HVZ<(@M*+8{441=%rpKy)di<9 zl7(Ov1%u;*)4H zM&G7C8o~_4xIXNIu%SOq;eeSW_v~hm?JyiLpRVFU<7eoC%isz^8PxV7JgwBWLg8>J z;Vei&9|i{i006)}x!8VyemUAnCf6gOhQF4%I7|Okf#yP%b#lEIv1UQ|T3pWoU&h5! jQ253y1ONa4a6^6p%$gx@WpdY{00000NkvXXu0mjfiPaY% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00023.png b/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a69139bf595541d46382b8f55b995c3802a5b5 GIT binary patch literal 720 zcmV;>0x$iEP)Atu}mv>^Zh00022$WOJzwrwGV7~@&h z{J~w46JvDiSE|@0sXDiEqKB(W)rn=228CaTWo}}O$)NnYMPbMs#J%sXg*Y_n5!;Yb zhLQ|dH1r+YxjT%A*mOL2`GU1!z2_5nP#RcTbQAwQ82F#enYC4&4v<9;Hn9{Cqtbr|%pP zAx}#4-6b)nAF}U$JsBxh-NoAL(Yt(UWXRoj_Hnz=QmoNhA5#oLGq$EOeXX4$0Ay2p za{5~PAAoCJuv854XJ1LwrCX61lJB91qxIEF?eA$!zAII?TWf@_6mHb?p2XYj@cxA$ z23K-$J7O>x!QqI(FyLzN!Ppk6CsXXz@zlc7?eR+|4-}y>Yc!1Ok0x3YkYXw{uwznU za+DMX2aM@S%SB0es>bnL-vdO}8J8ywKy^puG2_Xk0Z@31>vv`hfS!Of<|Zv2#r@-? zMGEv3P4A%AqF0{ z3@*$i^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00026.png b/tests/snapshots/nanox/test_sign_tx_lock_then_transfer/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..b00f750147440743b57ee216af279482a51fe50e GIT binary patch literal 689 zcmV;i0#5yjP)wqG05k0i}DW!kj0gND5 zp`hxga5LbB$sJey*n~^@0RR91a1vAd0Gfnc*LDB7C@C}=x39Z2s`*R&zIfH8H%S}c zpy@WoJ3vBpQ8%kO=Q2@JT~qZl`;bI8$Yx~>GyvL^eQ6nnjDMKfov^(XDj`x))VS4d zQ%5>&)0ls?S;7=7jTobc{v@kRGCl*!aHwfIhIH9x8c{K(NHdJr_uf-8pm`@JFV-ct z{_qB>G+ArLJ&ILbTgGm6MxYnN=wZAAs266WfGaGsvIH9~H<#(2M&_%iEcXyuh_Eds zMUar^0Uw~GFsn|)*pNT-IqVJ=22Y^ACs5xLXZ4#&(YmbZzMCCE60d0LD9Iy`1&MX%@czGr|sJgL8^ zj$ESv{j%m$8vdpFv;b{BX0^f%b><8IAAkh}002NQ(G#b~xZkjQ00zsmAeph`)(e`c z;!4`KD9wcoxli*%m+u2qOOgqvnw>RwjJ+=<>rw+%7G|xvd!lY;oZ1;Z*uGmhPtQQ+a7}bE>^QAE|g)jt;0{{R30ANRcI{rD&Gd_e6R7reI zU$5ov#A(VhuOvxTKEB(bwP3#^#kB|_MqRE9NgWc6zVhGg_^bV`1+c~x-U$5kfHN{o5-I5yM$#75Dyn8JcJlz-V-s2dj7m3v=-BOfILPY zQBzT;>nA5+>CM1_cX;#Kzy_Y6^*urBdxF;AhWZ00000U{A`oqbCe2E-h?h!m#4fLJ9T(&cFc9zyQu* t5}tb!rc4-CTv`~x5abLD0002{@(+IV7HDbI;GFXZ)>={G zKZdiqjJ|p5OK}B41M}Y$t-4*^>ZY*P=9O^H#o8C;bBG@uyP2!x<@OKp+IoI^6@Gi0 zKaXf1w~3EQEQ|6~7-lZdJX&lfk~%daKJ` z#>#W`@(g!CAE}NN!_8g!%`01qos0xchs6n<4iJNPEjA+4CLHIjHf=Pz)dR+9$&JWe z-j_FubA*fT;118Xug@6`#dwjgzt z?ig@%HMD7?t{Gr`bGQSV7*w;VO+jMC;?Y9GvQTlN$s35541dqsp@^s}>_g>NNI{E% z0{{R3tOh0Wm3Zq<^TAfm-n14(3XL^yKw=p(RRr~a{hd+Y7kWUx(5P4(UC#RVfDnUc z?$6jF1s!Pjz!nY=*R2j=u>&0YZ$dSrqBty@7XM)o1^@s609eZ}&JR9YO^uVK00000 LNkvXXu0mjf;}aVa literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_mint_tokens/00012.png b/tests/snapshots/nanox/test_sign_tx_mint_tokens/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..51c42bd9a075b3261bdeb444cf6a737086980d0a GIT binary patch literal 438 zcmV;n0ZIOeP)`f70PsYAd%qB4Tnixtvu6F6 zuJ$#$^Lz>`aj!H0vrX!u-RtmhOF{_sLBtsI(QnpYLj*L;l&1QS2y!R`c`mX>%tjbgt3q{wPnMi%=kNSBmZ3ude z>YXhu$4Z`bo6@4G7@mM*N((Ee!`(RZmX>BZm+yR3wyAap6JS2PzCxzbCY2q3Z*r$r zz_>Z+AnKGKI}vT35q6F0JclhPg-_&9)VD-gwA|cV@;0T6n$65DQFk@;lzekt4#B=B z>7Umn0bND{000000Dzn0kEF{Op(gql`wBSGcku~3(RV}+Jh2OT;&<2+p?-kM`vLmW zFV;*=yv|p@bbTQo)vRAbx5D9Qb0-TY6n-b?XQT9DP-v1a100000 g00000005Z68@#;Toe+}vn*aa+07*qoM6N<$f_u5Y{{R30 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_mint_tokens/00020.png b/tests/snapshots/nanox/test_sign_tx_mint_tokens/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2EyTicUXHesXZ#wxIB1#F2QQZdk3P5Kcy*o$5J~Rl*p-(=%8FDs z>6t(Bk|YMnjG9-CjkEb)Fb9cIg0yR8l{@GE=9aBU1~JG(N%Bz|G2G^TxaS9%z5)_r z!M0!&vJq}=$k;?vS+N2#q+o5T_u{f=xv*SFGukvOM}%_vgw7~Uf^flsqR2y;ujcsE-ndh@dN+>007|Oc%BCskf%2nHGkRI zJJ6`bR|g)MG$xDGPy_84AZz;NS%P>}K)8m^_UfL@+&E9atjm|iW=Lf%CQ)pxP zjE1#IF(D5Hv1ACN$bc49lW>#Bz&QjnnaNqDz{qgV^%nn7F8QXjDlX8{5auvs_*4q2CRi4VS*x z9{`-MhHA7+Kx2%_uI^sNO~CL)R(~GDJM+!M-75`;1c>5d4nb9Y)Rbp3O6=CCT8rJZ zvrq1};g#63R7>}rNqk5(Vy87$pM$-;s#?P)9G!@Jfbo1?W!~0(#47**006{8RYPOS zidXllkC?LJrM=?#d=ZNvD{^9bMR52c7DQIOgjXCZ0WoF88+cXHw*q3yiWl;#o0ziV qoxFk?dNS%QD5k9VG_L>vU@AYEW1v-AI4{fq0000cBl8&R~X*6uj7Mm#;B2AiY2h1r%ACnXDuzQufkEmCR2S=SM* zs`*VH!#&_Y+^`muiBqP#)v6M_id5Nlc0gI*FU%S`$oBl@mlm53=B$5i+h zMZ5V9tJ(z_TIV}!$G92!8mm4Y&`js%w5_q6()T%!f$XEKXce96S8i(7sr$lRt)(N+c)S3ih?)hplqU912X}fIz00000EArRSS4v4(j^k+P zpI_oP&nYE3k>9FtMTfXiShAC#q?EK05j+=9*GBzTjA{D;Kdl_qpnSL_ik^Ef6hMO8X`u7u-E2w9-NP6%f`eI4vU$-slsw9Qt__z%|D_03?PaL zdj%s#M!0LI=m8`HkLlq0K4J!BM8ewWWzZPOCsr%yqPEP>87jbC?3ngQRqj)W+G%DC zDnSITjTckN*eTW=+G^=)!_T^&;4YQw4Yb-m_S1qcLD$a0000wQrxlCjB9T1 z2DKvW;70$7qbKLBh+1FX?%L~CTCpK4TFu6FUts(Z(Y3F=u#f6twU+%Aw=)`R_;f>8 zt~ml90mOHcEAtg#a70$tfPe5$HubIvx7z4Md8Rh%0pCyr&%|2~6H^%Zp&jd?7c>v{ zm20stGgYDYQ3yCR7zRQO00_eQ{{sTH6{j}dBVb!`YNICfZ$noA0yqN!oWUX-dlBXY zY%5M}Bv68!fdBvi003AMJcz}95DVB)oZ6_tbAU4tz!?bO3>M+oi!di(Lvd;&ffD2l e1ONblb@>OdR*KEKrLPpZ#feA2(?U_A|$P9(vz&FufN6E6>vyS zSc}3$E(~|>l$Pek8NLDnF=5M2@4|7-cwyPEq?|%~wMKWWfI8)sF5XcpBD>U-PaY3l z8TYM#Frb!!^KUNS^Elw?Dsg91*q+Wu?o`t=CjRD7Yw4JPE^z<=00000ur7XMx=muJ z8GU#5Xue$hg!*{u!d%zN zl^fgAaW?l(#cB^Z3;S6LqtR=iLY!Ai+-$ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_mint_tokens/00025.png b/tests/snapshots/nanox/test_sign_tx_mint_tokens/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2=zTs8!y=g(K{HDyXif)=# zyFjXB+NQUS9WL)2zo>eII_Id&UTa^b$-Q*8>It#%JDdl#~r@1#R(#mIt dSP3G}yy9Nml{}^8#0@?kEP)UljbsXE3Fz%GPSp?Y5|9x&@T-1smw+O15#6==A%vgZ0j!{R zA*bpGcPk(xf~%UZ;yXJ4nl|J+U_Rv2Z<-v@J0SGn*)W_DFxjSfcdS8J2zosljkpk8skzSE1fE~Y5*iSESr zM^qLiheN2#JYvF$h@bYt`ZQeL34aoo{3@ck4*&oF?C0xV%(f4BdjJNP|29;=5%rAE zplrLL@7Qx94Y~Ezg+5W*#_hRWehz3_l|ndeI)-DuW3z5;Wa`4AwVppZbY#!swEKWr zmi<)w;$f<_X7!s-Et^lm!gjY2o6J<*$KuS27|K1B4BH>QhdUC`vnuUJ8sR%0aX_`T o*$W`-P#*vQ00000006#k07*qoM6N<$f_*Od3;+NC literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_conclude/00010.png b/tests/snapshots/nanox/test_sign_tx_order_conclude/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4738c2b5218d91c26364d8f77a67f937b410694b GIT binary patch literal 580 zcmV-K0=xZ*P)`#-Xgb%>2Ux60002&$d9RYDW(2=p6BG; z*Jzq?^erD*Kq-X^`({*9_oOyxy371JmV2S^mO8wG@Y!i+F9|%DqtdoQ$H9F-1{Vs6(;&x=yIGXj$YtFGS z0fPc+Xru1mzYLhVH#C`J7)<4HH0u#!v>d*L5JwmDp_k@e5bWc%5q9U1L=6A{00004 zZ1(}5V0g}w+ndffwY_zsEzp6bW z`n|@|3bdq96j$X#~~OaIoaJIogEC*f=5U*NvE`GN$N z9_Szv?0zKJ{YbF;8zX%2v8P=uaS+@2rC4z;cJCyh1<2&y0t4 zc3H?ZaCAv04b@qZ-X-mDF{KqKmh;%007vN z`>&%HEGwoK+E}oxm|EC_b3iaqKrm21Fi65{Ct=EhWyRFO3xuFxpa1{>*q48zF6^h4 SIY*}e00009 z&KbAaB?)7Up3$?ZD%a&+OR`02l!RRjNI|DCtq6Gn))3T0*9s`TQ1eTJztk?a9*;e3 zk;{5D*j8gl08(C)%fI|3u&aAURyov6YU}aXV(C_A3V9bxnO76>$ z01UAN0000000000eiQbOrlGhR?@#8R!}0zptZsj79wAbXU?6N3O5P2O6`-E%K-esl ztiopy$Dv>vDe=5t$`gZ`$h7}C6~Qa~X-HRZpN{^*I(BJcJ4Piz*dSc#J)8@j5C8xG z0JtZvYpP%PIMXAvo0ZoKJ!*|Eq4O#13-=U9ZAq%l?0=oZ)ijq}^^RB%o^8kIzG>ab z9Rm=yu92osdt$IE-_*d9aFxz2dgpcM?G>QfacN=DilkA5+Zdvxs`O`sM_`xq3{ud^ q+_VTEN|yI{)d&Cp00000@Zk?L!ro&HeOTxK0000^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_conclude/00022.png b/tests/snapshots/nanox/test_sign_tx_order_conclude/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..b71b25bddee80f99c1653e804db4662ef7ac8634 GIT binary patch literal 753 zcmVT+qQy+#} z&xREnZcMU%rGAlOvPIP@t6Vj2Dw#9Df<09o!faTn4_t-Sxy9xL>m+HzxKFJ~)6Mi5 zaG?&^2#(_%cUx6_OGIq2?p>@>2_@s03O_l#jAvNY zz7L@HeE+p$o<|;I)$a^wrgLlBHln@z>ilXb-pU=VqOSg`Ma_HazHn!iNK>4v!So>f zE~{wW-;%5pt9r9xU3aK;oAz{=x~EmO*7qi{>jSxF$xH5YQ}oiW@w)SZ&^H*Hn zDol)`OJB~Ngf(3v6{i^$WyK#fj?EH~YIRFMYR)~kPVazjThG?NT%>UNseS=z9pJ~n z!;NxQ-AEHMs5()UYG`f~?$wch*fs&VAzS}J;}e(|12#-R0ssJ@gtDQ*rF?u3?kxS* zo%p>A%B-Q>JK6+zvnx>Eg>irv@y zxhy@1J?8itB(i$1OGiIo<@pzK?N#Y{J9>m*-VOYr5M&`OVINo_mA6u-Rx(ab=l7P# jM`-#700000091YeFSqX4SjHy>00000NkvXXu0mjfj(}j4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_conclude/00030.png b/tests/snapshots/nanox/test_sign_tx_order_conclude/00030.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 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 LNkvXXu0mjf05bcY literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_conclude/00035.png b/tests/snapshots/nanox/test_sign_tx_order_conclude/00035.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_conclude/00037.png b/tests/snapshots/nanox/test_sign_tx_order_conclude/00037.png new file mode 100644 index 0000000000000000000000000000000000000000..1611a573d2e47eb4c7b01914d7b8abc105669794 GIT binary patch literal 565 zcmV-50?Pe~P)iNa~VwUCCTn#U*YYsnD~OM?qv;DXbYZ`UZ}!u&ZZu@1t8AO&j@? z$qm(C8YONcR|ysW2;+*%AhNAdxe`a-ouX$i?5I@vvPl8-akPpIVmY!cKp&)CGgUv5 zle-bN88P+PnomKc%h9-g)N9$!O@b|9>uWC9kg-n)@-oX2{rFOM(>U7-x63&xK>a`| z)4F|cq|A?{iF^~-+jhmsZ?@)QJ&r}sM%e3Vx?z8650`twpTtZ5is(Lr0002b<==g< z9lzn@0u*llZ>aoIY7D}zG1+xPyI!MgD?60}n!YT(-^A_ffZ8h^xyoH*a%4T#ak_0A z)3hs~?j`ifsTjJ~vb-N~727`RC}kVby3OCbnmN1@Zaj3IW|CQI`&gV=5z}-p6~peu z-p4x%P}_v|Qq*FEnO0000000000;1YfTYf0LKBEaktG3V{9=)R*09Bp$? zzB%$&|K#2?&ceKUk>*fr>y?FWma=- zmUWd|*A|K3IoW4h&wpGU_xNJuHId-+r`{SHXNVfz-6rX?ca?`-dseA-{NtMfD$BEV zPMZ6l*?VEewS!-;?pnD2Qw~R!aQo+8mcIg9+_LRDQ&g_xo?Ki}=rCz*!0wG5Zk?4G z^V;9%N#s0l_?`XYg3fwDk?f9hwd@&NS-^hKnf078yQDny^QY-%j$8j+6>m+LvSH5> zB^`Ym&I-x>CoRg%4E$R+8D%>kVcE~;(H!h>YjN~_of((R#CDb)(DXZWLiStP0d}<@ z_m?j$E;MG_Fx|M?Z(>)PxtLd!tNjr7bsrTO-TwzZ+?~zulW?0^K7#3WG#Ig`6{)JE z?Jw9U*u6(XEceKbe@m;|EA?hBnd@$z;y!y>ZR_ij_gdwj-xNPwaiHl`*&#tar+}0P z49P$wvT5P+$dh?`!Ew*cTcnNcdG7^!IC2=V@qxVL;BzkD-P%VxPj^q-;VqA@9TI!P s+|vj~2UXrw3oWw%$=NtS)Hm$-!_3OK!~d~Fcne6kr>mdKI;Vst0237Rpa1{> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_fill/00011.png b/tests/snapshots/nanox/test_sign_tx_order_fill/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..315c395bfa165489b8305def6f019fdbfe4306fe GIT binary patch literal 598 zcmV-c0;&CpP)@u2!_3#*@^pKl6#ql&Tt(OBP6r@zo#xK8Y(K*4FLcE003Y`K90IlO8L(i<1UFY z(p`StQ z?Wepy?tQIosX|D}ii{jd?qysJ{v#lzWP1R~%2J=@!XhuPhRt!&6H&%SS2&CR2r&C) zF3~)2!`#Zs6vpL^M5Q~re&SjeG!n0dAB?{Xvcb)#kx0VM(nl^FW@&(+TcK8cQSKtz zJzAP1C}Y(V@;RV?8NDv%HG;d6b#Z9`mzn?o000000G8zVL`*sog3u;BM>Q@Fp;^e8 zC>XaUXn>pfHUI)l!^lnjA(7^UdXjnU(L%cQl_>ju`$!f-n{d10pc!b`-Gnp0ALbS-v>;%o#_#_ljX}oP5Q$uf$hT1F=0&6D*8Zt1PSVVI z&&#=bG>ed7`_mO0ARN8mpMTIsfD5{rMJM4)iNe>#006Kq=|91=aR+u9#+|1D##i9ZRgh+{e;CW;`<<$U zUrU-Pgz&c46*R%fv!kS~p;I`9p(DVsI=Xp295(WSO005YYU$oICfG=+4!2kdN07*qoM6N<$f*9%z1^@s6 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_fill/00012.png b/tests/snapshots/nanox/test_sign_tx_order_fill/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..f766f97fff70baa971d06ffb1e139384ecfb800a GIT binary patch literal 401 zcmV;C0dD?@P)>@buBiV^|KJzv%eFDAagblf%o0Du)e4CnIR#~+<@`x)n4 z_*Ndb{H=2{c<NR18b}y4zVsT_vQ5wo6ROWR5n7hWR2KEJr9eqwic9Q#) z|2?^Z@ny-tqha^)G@o&QQqB$Bv@FZxT)Rld$}r^c5N)AI@|wbp zyC#@0bFwhVMyj@{cGtF`o+eyxYS_1+b7cBz&g4#-2XmcS3b57fP}N=(w}^6ImWxEv z-_=ei*MRnI^tw*(5zHr9mq`IkA^`vZ0002MqWFQS8zt3bzq7A|ll>t+X(#&wQG=1_ zLL;#bk3^~$P^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_fill/00022.png b/tests/snapshots/nanox/test_sign_tx_order_fill/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..62b7685df5d13d38c7c1b9927260d75a4e482cd4 GIT binary patch literal 752 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_order_fill/00037.png b/tests/snapshots/nanox/test_sign_tx_order_fill/00037.png new file mode 100644 index 0000000000000000000000000000000000000000..6e341c12f6108291dafc30ab2b21c5819a9ea614 GIT binary patch literal 541 zcmV+&0^KL@yqrWM6p!Lp?jD4VWenJR3>x)t%#*=l__)9(XXT-HtZb^KG--0C-< zP8OepmF&KcT4YYu{kH^@BHo7kR5A{Vqf@yf0kyJt{3}bXP1Z~QTOsp^1F|Ce00000 f00000@KO8%wPJu{apQ5?00000NkvXXu0mjf{5}5t literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_transfer/00010.png b/tests/snapshots/nanox/test_sign_tx_transfer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e6efc1ccb63a09c1d99ad17e541ad47ca3e62f GIT binary patch literal 590 zcmV-U0+y38P( zQM;;2;ZT0(Ov8K>VRCJEr@`s3Npg{3FoWVk){GdJook84o0+i#BI1Ir!C1(KyET=s zCQ9xecl6H-K!o08F%s<9FrgJ#L-5A*e76iY~6fD!{B>1jkW`f5BXPdj8Vg>*R>4}#nBF+l7^+X#etKvJ^;+u zw5Ql+YOhE*?FX>d@ynpMHg5-riOy)mH#W;hSOTm zIjpaS8l3PVrt1K_+x3w?0TAnpY5f)pkXrGXX^F#j5e}s9Wa2}r(RbWYNI?=_jME&T z{WB#10000$C(6}Ohh@dBh2P<@thlu>2S3CXg8(cB0ay%@u=X|w9u>r)0sdE4T002+qWvI)0FC@ot80t@l z7}M;%j~&lc1^ICt>FuPw%x}sV?|trx6*Q;af06?N=^a)*A<~X=|HBLNKreG>^a2627lHZU&uj z4EHXc#=!(evJhBNFgQM#2BuyJ%eSMSK+7vIdE>_RP+>TAC><*=W-YjpSz#NMlFo^) z`B7)VYU1s}NZu^}st6+#?l2r+PgilF@))|{GPr^;4QhQ6 zHY>HQP&iylXayh*v2jzk16&U9L0000Q(!GqSAI>Q*yl3e>(T zpgQ8KXZzCp_kAxohRRW;#(TH+G5Oefj3iME6|lLA({nwJwd@qh&ar3yrpxbus<~iC zI5~3C-P^@Zs413dl{?xw;T9F3l2>?I3H8`?%j@*g1#WH`^f$XAq5CI6951J0001dH2!8I`@Xw9RSk{Pf+S$4P z57q73yBuk#G0Shww7v6AOH&e!Q2(jDY5H0wJL6>fnyGAVwSBKx+8fH--&$9I+G$G- zl%WCyW{n!mD1sf7BkG45l=GWq=moT!HXN}Rwd?~D0000000000006M1U#(;C;ipbT Qod5s;07*qoM6N<$f)Li^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2*SwPd6Ty30Ckmr`5<>dPjI8Ww`QF3&MT*@8Q9a# z#=7P^9QEUV>l=M%HA~L(%RoUFm&;cKa+lqGK zE|1xMa|)Zq>Fw6Hy8W8&=NY83rG)L33pu_pPGf%!Z?67|u2p}nAXb6M2kY)7FHJpk SU?UR`i0kR<=d#Wzp$PzXMTkWJ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_transfer/00015.png b/tests/snapshots/nanox/test_sign_tx_transfer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..7898c993c00de7c7df72d2e88b7b8d20a29ae022 GIT binary patch literal 518 zcmV+h0{Q)kP))7 zkkjY~cPk)Kh1+lRedF%P4*&oF003VMuP^rG9B64lWs+lz>FYf;11mXCM6_nyE)wXe z4z_xRh^VZ9w%*H@u9lg~p<9eq|EhC2Dm?4et-%D z*}Uf{M){|*ePS@RPb{|vx3B4B|8JwwOfDA1ZEjGoD@+P`9`3!hpFV4?fWzqQTFzC$ zE_yX_EcYxI)?P}RW*0I_&-UiL*Sn;$1$F-_j`}QCZa%KG*J0}?nH9$>gZDf-zfKh_ zZna$A34am>{}nMheFFdhsPlD4FY^aBcVL40DM(Mt?6!0#Z5;?bv1C5G66)^(dRpda zY^e^lohxf2om^E$EK!jnR@kCtwqs9O>khy8y~OxU_#G|t)Y#kNOo})R_o-yGov+X3 z6$!}OMfWmt^izvG2+ucGU2UW4eCR;1h&})S00000004Xy{~{oS4?;YIQ2+n{07*qo IM6N<$g7)y_I{*Lx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00010.png b/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..6336f241d55f5b6ef6587216e65a120951cc521d GIT binary patch literal 593 zcmV-X0X%yp>p4JDa^#uh1b_-DrVZ*gOJ~k@+=0S0kWoh4Pb}x7F`juT@5>9+hXcRl+LP zW#aIxlBaKW_AAw>t>H# zEy=|LPA)-T=`Cos&+A+4R)o%c^L}D5P7eChh(GPxbC*Atjs~GiR^3+k)cPvOwB9`Cf?aE9y*B0jeGN^xPK6HR7RMl003|&{lB9R3@f@$9OJ;SqU%Ho&H={20mi@q#$XXXdl4=0y8U^Z$isj^V)@_$*WC@i#I~1-WYTRI>Wm#e)_eNG^S~;S7p3Ym(t5IKz)&H_z z#NUa!@==2BgMO!zwVT;<^*S9Q_ehu7&)^Y|jKTOj83ED?@{ym{>6qrINP|mb^39%@<^d1BPe< z00000000007l)0cX&9!)`jh!GIMzRe)$EVrSt9c+2Et~ceRg988n?n}!h zy{i(}D&D>gFH95gHwDIS8Em*AbHbOJ9%0Q}QstOPD(bnln&pH$i=#Fslc$xtm~C}w zu6#$#$Fz>T(3;CNb`H4pi&%1bw#abnhnqWK6MI-c)Q2GRgTYS=gNj1Mg{DqmX4(DA x$_aNChipu4Wk^wkpo75y000000000mkw3ok&(5>hw&?%>002ovPDHLkV1ifX0rLO= literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00020.png b/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00022.png b/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..31b2df9f0143e8c7840fac53daa4de974d34c5c4 GIT binary patch literal 744 zcmVP)%nlG;cl&ptz2v?s^>HobwI{mc`K@A$8f=TNEneBWW^HHjU8`8MrEZ$TL#A) z(pcI7W$ZggUy-z9DV1zCU6j*S4n1sC2G3rR?u@hJ7btlyAsrB62><{90002s!L)D0 zXqvt{hKPy#gPm5iYXDxiO1hP=MibYvst57xC#HhMOp8Zsu{}$2^bR#;WfOXr^;Z+Sa4J`|3P5THkx-Z;mCEOI_YA`$q z|Cd#??zbc=#VX!xXxANL-KISqrtWD~srB9@c0G_hOFn#`8={wf_1B#jBsa8b$|?k$ z2o6UdECa6Ih{(62_he)R_wQVROzaMOhUUmu6L(8MQqBD3RLvMF(0Jgj*fRksp1=I^ zT47)mUHWqFB(&+`sW{CjFDrhaacq`=6sv0jTyyNXb$SPM+j_Qs<-&!-PxT83>i|0j z9%hu&>Ux^sLDh(&R6}!{aIKE~#kL8^4cYn!8c$$i4A?LM2><|q;>w0Pm-6vFxUuwW zcjDJ7=^>@GX3u9NWIPF?{XdAfc0u;bE%bzCB+dB=2%DUvdmBpKC%RJnD;0zHGpqkq z!Hxaim$hEk0ry^cj7*o^4Lxs1kKoL^J%|2ns2zlj$ZSjnetp<{HFJ{^Ptq3v00000 a6n+3$qsZECxfB-w00001zT1C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00023.png b/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2qqSaJ?G0}n~?kDNg9>~0N{=u(G%E|bFM$8l%i&G zs^91dym8gsi_r_vsFy{lO+UCbGGIA>q9^c1&bg#nLaZ}g9egT-BOCo4u=<$qODU}` zlrc@#f|l1nOVCZqbq#XPBiCT`7F4W;xRY$tf9h5?lxbQ}J@|BumoNYT006+2sYW0!s)HHf4OMe-hwB~qW?Jn00000 c004LO2l4`Al-;AxasU7T07*qoM6N<$g7qYj#{d8T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00025.png b/tests/snapshots/nanox/test_sign_tx_unfreeze_tokens/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..ddae9bc727ce43b5a3db05ea4bc2d5593f297050 GIT binary patch literal 604 zcmV-i0;BzjP)L16kHLdv-NzpVV~@*n4)}8(k-`Hk0#RkhyiyM-tPv zOxDrNv_E?%I2~PhoIQin6T%r(CtyC{IC_usbAUD)2M)9OQ=5oAn@GD9rp+mYGfhfQ z2(xXQv%XpM)|0~TMNV50rg3PhcELpSuQp~eW<&H$(5bG(mDvUA_75`2E$Hd|(2Ug_ zhiG%#xP6$mBD6H^6}?7H^?di6_B6y)0%IwhxC&5Z)g#X1=;jxL5bZs^1x@!b_|s{K qUR#~BCjp%{0000000000fZ!jGM*h<6Vco0%0000`wSwKS&wcG|kWxx1848*ae`?$&+}5I6?pjW*pY2@7ar_TAE2UJ*Emanwm?~-# z4pSmzzH zySAEL%-(Q7>C#xQx*&DgZLr%zG@ENnt)qEVt3{NMjj7R8&|rQO?7NMA1M?2Jt0e#c z00025;m@&d@xY~NP99|HDB;CQcj3x5d44NR&ZRe&Jjsf|I6K_WWBpw*eWTJ%XM-^$ z$*?t&v{XZ1(|ni}XMhMFq3*W3g)k1tA$#$%EHshs1L|v&(A2$HZU*oh^BFY}@pJv; zN0`rM;J`a(b8O%PPhfpdV0}+u{cULeOj!%}92XBA#G1e5Y`ZCLAH>M9#g0LWhod@_ zM&$Wbw7zy+iYpvsAO?9w%?MaFi;XDM@QDTOyyg&m9Ppa3+B|O2Q1~G8Tr{-nCt=Y& zp@o6zI!uHR)&&s-{xAH3v2#~Ik`Km8(H0KD08MTDw ztj!8Q>e8re=x@um!M3N+Z043+rxwwmr8OfZ786s$TCf;03I6U(`tl43zz|CS00000 z0002scVN$G8j7p&{$xHJj`zR9>h_1{1Vg$uPJAGA3Ul5H#t2YP7a{Bx=B&bJ_&gQ> zb4ZEj{ZgJ7%p_0y|ED5&Z9k3N)sLq337=z^7WQL2Nf34jSFUt2?k6Dt008%;Jq^7N zX|7`J+pu7oK=U~Jz_vDgA#=h-%^sm=mE;@~MMLWKUQW2PIBH|Exa-`->}yN%P002ovPDHLkV1gYT{Mi5i literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unmint_tokens/00020.png b/tests/snapshots/nanox/test_sign_tx_unmint_tokens/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 zcmV^8toDWzWLoHtrB zgUbLw*F!vp;di$I!!!>*bUGK9lW`V+u8ZBp;BU79Q@C?C#?u12Q+;8#&B;N{R9EeSN-0o!e6DM+hM(By~$0gYIvAr4ju*ikY2)O|(8|fM_W2)v_o-UfEIJ7Thx=|&~YM#y5tz)zS z==!d?p-#r07y8HE-K5<}>evp=XB{VGiZ}@~4L0L7gZks-f?ZId7fcJ_zscB)q?qJ>HL)Zy=oBMY{{?9;~{8 zB`J0af+g86wkJ`?z^=jEPqIW9HRm7s=3#`xkwI~s*H-oSo7Gu;Q<@P8oc?*bIf)Ia zv&vppWYp6GV4lCD>MYJYSZG>tDtwm|F{I9ZN0C*{fM%5&(hK#Z6cbI zI%zm#%ytGe-&ADZm4XiBL^bpT-lNC{K@glpDaE$&Fjq7;KHuZ%Ct;bP&xclgYc${5 z*e;0E2(4299-PP+dkbuT_t5%ULyK-2bqPYwq{ngr-v#*_d60002q$cL}FecwsTwr!K9 z=(D`_+$M5piAt8sx!p36shapE-9H*A`h5BuU(d!3E0Q9%RJ| zI1mfA1*4FSaBD-(PGm2man>c^K-*YF$hKodVN!s6w|kLATTnOlM&TZJZ4dOFrDSyi za_zSi*Zxb=qfi>OZQ9FDJ2Qy4vv;J2)0p_F7T(Ty0=zr{00000cr(uT0UG4(%|*&z zHuecL3h~u}Ba_BtwHU|I?f|k9S6(ED_XNa_J(kaC7<|s6(N=)*2mdJcu{E5L#x(?5 z0cA@^>D^+(;ar~p66^9#vCq`KGVv!zhw__T9Y2in(Y|ui>;p$U=!}bae(QT`3T-T( z(XcitCgi0cR_(uspRgnP7lIsI$-l582a6E`jvOolp?){`VZn5a_?8+ONGvLYv@R|JPIVnJlZTX@B>5)e~Xe1KOa=T<;WS@A|*ohGKN r_$05OhF*-i1;vyV-{utn08Hf@PV=WojFXLk00000NkvXXu0mjf0Z>HH literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unmint_tokens/00022.png b/tests/snapshots/nanox/test_sign_tx_unmint_tokens/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..31b2df9f0143e8c7840fac53daa4de974d34c5c4 GIT binary patch literal 744 zcmVP)%nlG;cl&ptz2v?s^>HobwI{mc`K@A$8f=TNEneBWW^HHjU8`8MrEZ$TL#A) z(pcI7W$ZggUy-z9DV1zCU6j*S4n1sC2G3rR?u@hJ7btlyAsrB62><{90002s!L)D0 zXqvt{hKPy#gPm5iYXDxiO1hP=MibYvst57xC#HhMOp8Zsu{}$2^bR#;WfOXr^;Z+Sa4J`|3P5THkx-Z;mCEOI_YA`$q z|Cd#??zbc=#VX!xXxANL-KISqrtWD~srB9@c0G_hOFn#`8={wf_1B#jBsa8b$|?k$ z2o6UdECa6Ih{(62_he)R_wQVROzaMOhUUmu6L(8MQqBD3RLvMF(0Jgj*fRksp1=I^ zT47)mUHWqFB(&+`sW{CjFDrhaacq`=6sv0jTyyNXb$SPM+j_Qs<-&!-PxT83>i|0j z9%hu&>Ux^sLDh(&R6}!{aIKE~#kL8^4cYn!8c$$i4A?LM2><|q;>w0Pm-6vFxUuwW zcjDJ7=^>@GX3u9NWIPF?{XdAfc0u;bE%bzCB+dB=2%DUvdmBpKC%RJnD;0zHGpqkq z!Hxaim$hEk0ry^cj7*o^4Lxs1kKoL^J%|2ns2zlj$ZSjnetp<{HFJ{^Ptq3v00000 a6n+3$qsZECxfB-w00001zT1C literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_tx_unmint_tokens/00023.png b/tests/snapshots/nanox/test_sign_tx_unmint_tokens/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..11e1d3f4987e6909b000e38bd3a1d23a192382da GIT binary patch literal 767 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 Nndyxym6tsp{2w{TntA{L delta 9216 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 bB(g8tQ~j>(>p0zj3mi6<_Lpiedf)v&xA|{_ diff --git a/tests/snapshots/stax/test_sign_tx_lock_then_transfer/00011.png b/tests/snapshots/stax/test_sign_tx_lock_then_transfer/00011.png index 3b07cf0fb503f3da6427ea0e43cc89619a4cc241..9f3c01a69c392552096df85ed320e4355aee64dc 100644 GIT binary patch delta 9275 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 Nndyxym6tsp{2w{TntA{L delta 9216 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 bB(g8tQ~j>(>p0zj3mi6<_Lpiedf)v&xA|{_ diff --git a/tests/test_app_mainmenu.py b/tests/test_app_mainmenu.py index bfc8f09..a55bdc3 100644 --- a/tests/test_app_mainmenu.py +++ b/tests/test_app_mainmenu.py @@ -7,8 +7,13 @@ def test_app_mainmenu(device, navigator, test_name): # Navigate in the main menu if device.is_nano: - instructions = [NavInsID.RIGHT_CLICK] + instructions = [ + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK + ] else: - instructions = [NavInsID.USE_CASE_HOME_SETTINGS] + instructions = [ + NavInsID.USE_CASE_HOME_SETTINGS, + ] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, instructions, screen_change_before_first_instruction=False) diff --git a/tests/test_sign_cmd.py b/tests/test_sign_cmd.py index 34adc6c..5bf93c0 100644 --- a/tests/test_sign_cmd.py +++ b/tests/test_sign_cmd.py @@ -3,7 +3,11 @@ from ragger.navigator import NavIns, NavInsID from application_client import MAINNET -from application_client.mintlayer_command_sender import MintlayerCommandSender, sign_tx_review +from application_client.mintlayer_command_sender import ( + MintlayerCommandSender, + sign_tx_review, + ReviewTransaction, +) from application_client.mintlayer_response_unpacker import unpack_get_public_key_response from application_client.mintlayer_transaction import Transaction @@ -86,7 +90,12 @@ def test_sign_tx_transfer(backend, scenario_navigator, device, navigator): coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\stransfer") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\stransfer" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_lock_then_transfer(backend, scenario_navigator, device, navigator): @@ -142,7 +151,12 @@ def test_sign_tx_lock_then_transfer(backend, scenario_navigator, device, navigat coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\swithdrawal") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\swithdrawal" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_create_delegation(backend, scenario_navigator, device, navigator): @@ -212,7 +226,12 @@ def test_sign_tx_create_delegation(backend, scenario_navigator, device, navigato coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\screate") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\screate" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_delegation_staking(backend, scenario_navigator, device, navigator): @@ -275,7 +294,12 @@ def test_sign_tx_delegation_staking(backend, scenario_navigator, device, navigat coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\sstake") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\sstake" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_create_stake_pool(backend, scenario_navigator, device, navigator): @@ -359,7 +383,12 @@ def test_sign_tx_create_stake_pool(backend, scenario_navigator, device, navigato coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\screate\sstake") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\screate\sstake" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_issue_fungible_token(backend, scenario_navigator, device, navigator): @@ -436,7 +465,12 @@ def test_sign_tx_issue_fungible_token(backend, scenario_navigator, device, navig coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\screate\stoken") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\screate\stoken" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_issue_nft(backend, scenario_navigator, device, navigator): @@ -529,7 +563,12 @@ def test_sign_tx_issue_nft(backend, scenario_navigator, device, navigator): coin=MAINNET, inputs=[inp], input_commitments=[inp_commitment], outputs=[output] ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\screate\sNFT") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\screate\sNFT" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_mint_tokens(backend, scenario_navigator, device, navigator): @@ -632,7 +671,12 @@ def test_sign_tx_mint_tokens(backend, scenario_navigator, device, navigator): outputs=[mint_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\smint\stokens") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\smint\stokens" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_unmint_tokens(backend, scenario_navigator, device, navigator): @@ -769,7 +813,12 @@ def test_sign_tx_unmint_tokens(backend, scenario_navigator, device, navigator): outputs=[change_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\sunmint\stokens") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\sunmint\stokens" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_freeze_tokens(backend, scenario_navigator, device, navigator): @@ -868,7 +917,12 @@ def test_sign_tx_freeze_tokens(backend, scenario_navigator, device, navigator): outputs=[change_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\sfreeze\stokens") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\sfreeze\stokens" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_unfreeze_tokens(backend, scenario_navigator, device, navigator): @@ -967,7 +1021,12 @@ def test_sign_tx_unfreeze_tokens(backend, scenario_navigator, device, navigator) outputs=[change_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\sunfreeze") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\sunfreeze" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_change_token_authority(backend, scenario_navigator, device, navigator): @@ -1075,7 +1134,12 @@ def test_sign_tx_change_token_authority(backend, scenario_navigator, device, nav outputs=[change_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\schange\stoken") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\schange\stoken" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_change_token_metadata_uri( @@ -1180,7 +1244,12 @@ def test_sign_tx_change_token_metadata_uri( outputs=[change_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\schange\stoken") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\schange\stoken" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_order_fill(backend, scenario_navigator, device, navigator): @@ -1321,7 +1390,12 @@ def test_sign_tx_order_fill(backend, scenario_navigator, device, navigator): outputs=[change_output, fill_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\sfill\sorder") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\sfill\sorder" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_order_conclude(backend, scenario_navigator, device, navigator): @@ -1457,7 +1531,12 @@ def test_sign_tx_order_conclude(backend, scenario_navigator, device, navigator): outputs=[change_output, conclude_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=True, review_custom_screen_text=r"Sign\sconclude\sorder") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=True, + review_custom_screen_text=r"Sign\sconclude\sorder" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) def test_sign_tx_htlc(backend, scenario_navigator, device, navigator): @@ -1563,4 +1642,9 @@ def test_sign_tx_htlc(backend, scenario_navigator, device, navigator): outputs=[htlc_output, change_output], ) - sign_tx_review(client, device, navigator, scenario_navigator, transaction, has_command_input=False, review_custom_screen_text=r"Sign\screate\sHTLC") + review_tx = ReviewTransaction( + transaction=transaction, + has_command_input=False, + review_custom_screen_text=r"Sign\screate\sHTLC" + ) + sign_tx_review(client, device, navigator, scenario_navigator, review_tx) diff --git a/tests/test_sign_message.py b/tests/test_sign_message.py index f14ae97..16d8406 100644 --- a/tests/test_sign_message.py +++ b/tests/test_sign_message.py @@ -1,10 +1,12 @@ import pytest -import scalecodec # type: ignore from ragger.error import ExceptionRAPDU from application_client import MAINNET from application_client.mintlayer_command_sender import ( Errors, MintlayerCommandSender) +from application_client.mintlayer_response_unpacker import ( + unpack_sign_message_response, +) # In this test we check that the message signing works @@ -15,10 +17,8 @@ def test_sign_message(backend, scenario_navigator): with client.sign_message(coin=MAINNET, addr_type=0, path=path, message=message): scenario_navigator.review_approve() - response = scalecodec.base.ScaleBytes(client.get_async_response().data) - response_obj = scalecodec.base.RuntimeConfiguration().create_scale_object("Response", data=response) - response = response_obj.decode() - assert response["MessageSignature"] is not None + sig = unpack_sign_message_response(client.get_async_response().data) + assert len(sig) == 64 def test_sign_message_pkh(backend, scenario_navigator): path = "m/44'/19788'/0'/0/0" @@ -27,10 +27,8 @@ def test_sign_message_pkh(backend, scenario_navigator): with client.sign_message(coin=MAINNET, addr_type=1, path=path, message=message): scenario_navigator.review_approve() - response = scalecodec.base.ScaleBytes(client.get_async_response().data) - response_obj = scalecodec.base.RuntimeConfiguration().create_scale_object("Response", data=response) - response = response_obj.decode() - assert response["MessageSignature"] is not None + sig = unpack_sign_message_response(client.get_async_response().data) + assert len(sig) == 64 # Message signing refused test