From a4e28079721ebc701fc627c70226ba8a053fa04f Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Tue, 30 Jan 2024 10:23:20 +0000 Subject: [PATCH 1/7] update deps --- deps/ledger-zxlib | 2 +- deps/nanos-secure-sdk | 2 +- deps/nanosplus-secure-sdk | 2 +- deps/nanox-secure-sdk | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index df81cb7..f19112b 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit df81cb767d464995327218f0fb92eaa2dd3b4db3 +Subproject commit f19112bb6340721c276af459924b3c4261c0291a diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk index 0532bf2..62dd047 160000 --- a/deps/nanos-secure-sdk +++ b/deps/nanos-secure-sdk @@ -1 +1 @@ -Subproject commit 0532bf20fbbb11dd08dada62060f8337097b6078 +Subproject commit 62dd047774b5e8a6b4e6158b493ee029453b5bae diff --git a/deps/nanosplus-secure-sdk b/deps/nanosplus-secure-sdk index a01a99c..276361f 160000 --- a/deps/nanosplus-secure-sdk +++ b/deps/nanosplus-secure-sdk @@ -1 +1 @@ -Subproject commit a01a99cf008672556991c4126066531024ce48df +Subproject commit 276361fa25b4a1781b732567b557dcbc4f99ebf2 diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk index a01a99c..276361f 160000 --- a/deps/nanox-secure-sdk +++ b/deps/nanox-secure-sdk @@ -1 +1 @@ -Subproject commit a01a99cf008672556991c4126066531024ce48df +Subproject commit 276361fa25b4a1781b732567b557dcbc4f99ebf2 From 9c1a95d07552b67787d82612d3e71319d5e43746 Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Mon, 29 Jan 2024 17:48:35 +0000 Subject: [PATCH 2/7] remove renderable address feature --- app/Makefile.version | 2 +- app/src/parser_impl.c | 9 +-- app/src/parser_impl_common.c | 97 +++++++++----------------------- app/src/parser_txdef.h | 2 - app/src/tx_cchain.c | 10 +--- app/src/tx_pchain.c | 10 +--- tests/testvectors/testcases.json | 16 ++++-- 7 files changed, 47 insertions(+), 99 deletions(-) diff --git a/app/Makefile.version b/app/Makefile.version index f86d41b..9f35a33 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=0 # This is the minor version APPVERSION_N=0 # This is the patch version -APPVERSION_P=8 +APPVERSION_P=9 diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c index ea2b6d8..b753443 100644 --- a/app/src/parser_impl.c +++ b/app/src/parser_impl.c @@ -159,20 +159,17 @@ parser_error_t getNumItems(const parser_context_t *ctx, uint8_t *numItems) { switch (ctx->tx_obj->tx_type) { case p_export_tx: // Tx + fee + Amounts(= n_outs) + Addresses - *numItems = 2 + ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask) + + *numItems = 2 + ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.p_export_tx.secp_outs.n_outs + expertModeHashField; break; case p_import_tx: // Tx + fee + Amounts(= n_outs) + Addresses *numItems = 2 + ctx->tx_obj->tx.p_import_tx.base_secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_import_tx.base_secp_outs.out_render_mask) + - expertModeHashField; + ctx->tx_obj->tx.p_import_tx.base_secp_outs.n_outs + expertModeHashField; break; case c_export_tx: // Tx + fee + Amounts(= n_outs) + Addresses - *numItems = 2 + ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask) + + *numItems = 2 + ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.c_export_tx.secp_outs.n_outs + expertModeHashField; break; case c_import_tx: diff --git a/app/src/parser_impl_common.c b/app/src/parser_impl_common.c index c289ee6..a4d9d76 100644 --- a/app/src/parser_impl_common.c +++ b/app/src/parser_impl_common.c @@ -193,36 +193,11 @@ parser_error_t parse_evm_inputs(parser_context_t *c, evm_inputs_t *evm) { return parser_ok; } -bool parser_output_contains_change_address(parser_context_t *c) { - bool contains = false; - // verify address is renderable compare with CHANGE ADDRESS -#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) || defined(TARGET_STAX) - CTX_CHECK_AVAIL(c, ADDRESS_LEN) - if (MEMCMP(c->buffer + c->offset, change_address, ADDRESS_LEN) == 0) { - contains = false; - } else { - contains = true; - } -#else - uint8_t test_change_address[ADDRESS_LEN] = {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}; - - CTX_CHECK_AVAIL(c, ADDRESS_LEN) - if (MEMCMP(c->buffer + c->offset, test_change_address, ADDRESS_LEN) == 0) { - contains = false; - } else { - contains = true; - } -#endif - return contains; -} - parser_error_t parse_transferable_secp_output(parser_context_t *c, transferable_out_secp_t *outputs, bool verify_locktime) { if (outputs == NULL) { return parser_unexpected_error; } outputs->out_sum = 0; - bool is_renderable = false; for (uint32_t i = 0; i < outputs->n_outs; i++) { // skip assetId @@ -259,19 +234,9 @@ parser_error_t parse_transferable_secp_output(parser_context_t *c, transferable_ return parser_unexpected_threshold; } - // Following AVAX logic 99.99% of tx have only one address, so we should test if it matches the change_address, in - // case the output has more then one address then the output should be rendered with all its addresses - if (tmp_n_adresses == 1) { - is_renderable = parser_output_contains_change_address(c); - outputs->out_render_mask |= (is_renderable ? 1 : 0) << i; + for (uint32_t j = 0; j < tmp_n_adresses; j++) { verifyBytes(c, ADDRESS_LEN); - outputs->n_addrs = is_renderable ? (outputs->n_addrs + 1) : outputs->n_addrs; - } else { - outputs->out_render_mask |= 1 << i; - for (uint32_t j = 0; j < tmp_n_adresses; j++) { - verifyBytes(c, ADDRESS_LEN); - outputs->n_addrs++; - } + outputs->n_addrs++; } } @@ -283,11 +248,9 @@ parser_error_t parse_evm_output(parser_context_t *c, evm_outs_t *outputs) { return parser_unexpected_error; } outputs->out_sum = 0; - uint8_t is_renderable = 0; + for (uint32_t i = 0; i < outputs->n_outs; i++) { // Check address is renderable - is_renderable = parser_output_contains_change_address(c); - outputs->out_render_mask |= (is_renderable ? 1 : 0) << i; verifyBytes(c, ADDRESS_LEN); // Save amount to total @@ -399,31 +362,27 @@ parser_error_t parser_get_secp_output_for_index(parser_context_t *out_ctx, trans uint64_t count = 0; uint32_t out_n_addr = 0; for (uint32_t i = 0; i < secp_outs.n_outs; i++) { - if ((secp_outs.out_render_mask & (1 << i)) == 0) { - CHECK_ERROR(parser_go_to_next_transferable_output(out_ctx)); - } else { - // read amount and check if its the index we are looking for return element 0 for amount print - CHECK_ERROR(verifyBytes(out_ctx, AMOUNT_OFFSET)); - CHECK_ERROR(read_u64(out_ctx, amount)); + // read amount and check if its the index we are looking for return element 0 for amount print + CHECK_ERROR(verifyBytes(out_ctx, AMOUNT_OFFSET)); + CHECK_ERROR(read_u64(out_ctx, amount)); + if (count == inner_displayIdx) { + *element_idx = 0; + return parser_ok; + } + + CHECK_ERROR(verifyBytes(out_ctx, N_ADDRESS_OFFSET)); + CHECK_ERROR(read_u32(out_ctx, &out_n_addr)); + // Go through output addresses and check if its the index we are looking for return element >0 for address print + for (uint32_t j = 1; j <= out_n_addr; j++) { + CHECK_ERROR(readBytes(out_ctx, address, ADDRESS_LEN)); + count++; if (count == inner_displayIdx) { - *element_idx = 0; + *element_idx = j; return parser_ok; } - - CHECK_ERROR(verifyBytes(out_ctx, N_ADDRESS_OFFSET)); - CHECK_ERROR(read_u32(out_ctx, &out_n_addr)); - // Go through output addresses and check if its the index we are looking for return element >0 for address print - for (uint32_t j = 1; j <= out_n_addr; j++) { - CHECK_ERROR(readBytes(out_ctx, address, ADDRESS_LEN)); - count++; - if (count == inner_displayIdx) { - *element_idx = j; - return parser_ok; - } - } - // We did not find the index in the address add one for the next amoount we are about to read - count++; } + // We did not find the index in the address add one for the next amoount we are about to read + count++; } return parser_unexpected_number_items; } @@ -436,18 +395,14 @@ parser_error_t parser_get_evm_output_index(parser_context_t *out_ctx, evm_outs_t uint64_t count = 0; for (uint32_t i = 0; i < evm_outs.n_outs; i++) { - if ((evm_outs.out_render_mask & (1 << i)) == 0) { - CHECK_ERROR(parser_go_to_next_transferable_output(out_ctx)); - } else { - CHECK_ERROR(readBytes(out_ctx, address, ADDRESS_LEN)); - CHECK_ERROR(read_u64(out_ctx, amount)); - CHECK_ERROR(verifyBytes(out_ctx, ASSET_ID_LEN)); + CHECK_ERROR(readBytes(out_ctx, address, ADDRESS_LEN)); + CHECK_ERROR(read_u64(out_ctx, amount)); + CHECK_ERROR(verifyBytes(out_ctx, ASSET_ID_LEN)); - if (count == out_index) { - return parser_ok; - } - count++; + if (count == out_index) { + return parser_ok; } + count++; } return parser_unexpected_number_items; } diff --git a/app/src/parser_txdef.h b/app/src/parser_txdef.h index 697f18d..0c5f7dd 100644 --- a/app/src/parser_txdef.h +++ b/app/src/parser_txdef.h @@ -105,7 +105,6 @@ typedef struct { const uint8_t *outs; uint16_t outs_offset; uint64_t out_sum; - uint64_t out_render_mask; uint32_t n_addrs; } transferable_out_secp_t; @@ -132,7 +131,6 @@ typedef struct { const uint8_t *outs; uint16_t outs_offset; uint64_t out_sum; - uint64_t out_render_mask; } evm_outs_t; typedef struct { diff --git a/app/src/tx_cchain.c b/app/src/tx_cchain.c index 7d04224..1b5c9df 100644 --- a/app/src/tx_cchain.c +++ b/app/src/tx_cchain.c @@ -121,8 +121,7 @@ parser_error_t print_c_export_tx(const parser_context_t *ctx, uint8_t displayIdx } // print ampount and addresses - if (displayIdx <= ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask)) { + if (displayIdx <= ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.c_export_tx.secp_outs.n_outs) { parser_context_t output_ctx = {.buffer = ctx->tx_obj->tx.c_export_tx.secp_outs.outs, .bufferLen = ctx->bufferLen - ctx->tx_obj->tx.c_export_tx.secp_outs.outs_offset + 1, .offset = 0, @@ -147,8 +146,7 @@ parser_error_t print_c_export_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } - if (displayIdx == ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask) + 1) { + if (displayIdx == ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.c_export_tx.secp_outs.n_outs + 1) { snprintf(outKey, outKeyLen, "Fee"); uint64_t fee = ctx->tx_obj->tx.c_export_tx.evm_inputs.in_sum - ctx->tx_obj->tx.c_export_tx.secp_outs.out_sum; CHECK_ERROR( @@ -156,9 +154,7 @@ parser_error_t print_c_export_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } - if (displayIdx == ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask) + 1 + - 1) { + if (displayIdx == ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.c_export_tx.secp_outs.n_outs + 1 + 1) { snprintf(outKey, outKeyLen, "Hash"); printHash(ctx, outVal, outValLen, pageIdx, pageCount); return parser_ok; diff --git a/app/src/tx_pchain.c b/app/src/tx_pchain.c index e643437..91fc493 100644 --- a/app/src/tx_pchain.c +++ b/app/src/tx_pchain.c @@ -246,8 +246,7 @@ parser_error_t print_p_export_tx(const parser_context_t *ctx, uint8_t displayIdx } // print ampount and addresses - if (displayIdx <= ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask)) { + if (displayIdx <= ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.p_export_tx.secp_outs.n_outs) { // Create new context parser for outputs parser_context_t output_ctx = {.buffer = ctx->tx_obj->tx.p_export_tx.secp_outs.outs, .bufferLen = ctx->bufferLen - ctx->tx_obj->tx.p_export_tx.secp_outs.outs_offset + 1, @@ -273,8 +272,7 @@ parser_error_t print_p_export_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } - if (displayIdx == ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask) + 1) { + if (displayIdx == ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.p_export_tx.secp_outs.n_outs + 1) { snprintf(outKey, outKeyLen, "Fee"); uint64_t fee = ctx->tx_obj->tx.p_export_tx.base_secp_ins.in_sum - (ctx->tx_obj->tx.p_export_tx.base_secp_outs.out_sum + ctx->tx_obj->tx.p_export_tx.secp_outs.out_sum); @@ -283,9 +281,7 @@ parser_error_t print_p_export_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } - if (displayIdx == ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask) + 1 + - 1) { + if (displayIdx == ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + ctx->tx_obj->tx.p_export_tx.secp_outs.n_outs + 1 + 1) { snprintf(outKey, outKeyLen, "Hash"); printHash(ctx, outVal, outValLen, pageIdx, pageCount); return parser_ok; diff --git a/tests/testvectors/testcases.json b/tests/testvectors/testcases.json index 3c23229..c999f39 100644 --- a/tests/testvectors/testcases.json +++ b/tests/testvectors/testcases.json @@ -1,23 +1,29 @@ [ { "index": 1, - "name": "Export_Tx_with_change_address", + "name": "Export_Tx_2_address", "blob": "0000000000010000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000000000000000000000000000000000000000000000000000000000000000000015a6a8c28a2fc040df3b7490440c50f00099c957a000000028fb5f04058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000000000001c0000000258734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700000002541b264000000000000000000000000100000001db89a2339639a5f3fa183258cfea265e4d1cce6c58734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000000000000000000000000000000000000100000001aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "output": [ "0 | Export : C to P chain", "1 | Amount : 10.001 C2FLR", "2 | Address [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "2 | Address [2/2] : vwcckmr", - "3 | Fee : 1 C2FLR" + "3 | Amount : 0 C2FLR", + "4 | Address [1/2] : costwo14242424242424242424242424242424", + "4 | Address [2/2] : 28ew7nj", + "5 | Fee : 1 C2FLR" ], "output_expert": [ "0 | Export : C to P chain", "1 | Amount : 10.001 C2FLR", "2 | Address [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "2 | Address [2/2] : vwcckmr", - "3 | Fee : 1 C2FLR", - "4 | Hash [1/2] : fca356a36fa8ab1b3b6a6a7e5ff58cc7dc82bb", - "4 | Hash [2/2] : 09110093c93820fc45d72c776e" + "3 | Amount : 0 C2FLR", + "4 | Address [1/2] : costwo14242424242424242424242424242424", + "4 | Address [2/2] : 28ew7nj", + "5 | Fee : 1 C2FLR", + "6 | Hash [1/2] : fca356a36fa8ab1b3b6a6a7e5ff58cc7dc82bb", + "6 | Hash [2/2] : 09110093c93820fc45d72c776e" ] }, { From 1955774f01106afc8d8e6d74ce28f5f13c87d24c Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Wed, 28 Feb 2024 19:08:16 +0000 Subject: [PATCH 3/7] format files --- app/src/eth_erc20.h | 35 ++++++++++++++++----------------- app/src/eth_utils.h | 45 ++++++++++++++++++++---------------------- app/src/rlp_def.h | 48 ++++++++++++++++++++++----------------------- 3 files changed, 62 insertions(+), 66 deletions(-) diff --git a/app/src/eth_erc20.h b/app/src/eth_erc20.h index 2fe18e6..ba53731 100644 --- a/app/src/eth_erc20.h +++ b/app/src/eth_erc20.h @@ -1,25 +1,25 @@ /******************************************************************************* -* (c) 2018 - 2023 Zondax AG -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -********************************************************************************/ + * (c) 2018 - 2023 Zondax AG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ #pragma once #include + +#include "coin.h" #include "parser_common.h" #include "rlp.h" -#include "coin.h" - #ifdef __cplusplus extern "C" { @@ -34,8 +34,7 @@ typedef struct { bool validateERC20(rlp_t data); parser_error_t getERC20Token(const rlp_t *data, char tokenSymbol[MAX_SYMBOL_LEN], uint8_t *decimals); -parser_error_t printERC20Value(const rlp_t *data, char *outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount); +parser_error_t printERC20Value(const rlp_t *data, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); #ifdef __cplusplus } diff --git a/app/src/eth_utils.h b/app/src/eth_utils.h index d511863..8debb44 100644 --- a/app/src/eth_utils.h +++ b/app/src/eth_utils.h @@ -1,23 +1,24 @@ /******************************************************************************* -* (c) 2018 - 2023 Zondax AG -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -********************************************************************************/ + * (c) 2018 - 2023 Zondax AG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ #pragma once #include #include + #include "parser_common.h" #include "rlp.h" @@ -26,12 +27,11 @@ extern "C" { #endif typedef enum RlpError { - rlp_ok = 0, - rlp_no_data, - rlp_invalid_data, + rlp_ok = 0, + rlp_no_data, + rlp_invalid_data, } rlp_error_t; - // Add two numbers returning UINT64_MAX if overflows uint64_t saturating_add(uint64_t a, uint64_t b); @@ -42,8 +42,7 @@ uint32_t saturating_add_u32(uint32_t a, uint32_t b); // Gets the number of bytes read and the number of bytes to read // // Returns false if there is a error in the rlp encoded data, true otherwise. -rlp_error_t get_tx_rlp_len(const uint8_t *buffer, uint32_t len, uint64_t *read, - uint64_t *to_read); +rlp_error_t get_tx_rlp_len(const uint8_t *buffer, uint32_t len, uint64_t *read, uint64_t *to_read); // Use to decode rlp data pointed by data. // sets itemOffset to point to encoded data like item = data[itemOffset], and sets its len. @@ -54,11 +53,9 @@ rlp_error_t parse_rlp_item(const uint8_t *data, uint32_t dataLen, uint32_t *read // returns 0 on success, a negative number otherwise parser_error_t be_bytes_to_u64(const uint8_t *bytes, uint8_t len, uint64_t *num); -parser_error_t printRLPNumber(const rlp_t *num, char* outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount); +parser_error_t printRLPNumber(const rlp_t *num, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); -parser_error_t printEVMAddress(const rlp_t *address, char* outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount); +parser_error_t printEVMAddress(const rlp_t *address, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); #ifdef __cplusplus } #endif diff --git a/app/src/rlp_def.h b/app/src/rlp_def.h index 2667518..2be33fb 100644 --- a/app/src/rlp_def.h +++ b/app/src/rlp_def.h @@ -1,18 +1,18 @@ /******************************************************************************* -* (c) 2018 - 2023 ZondaX AG -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -********************************************************************************/ + * (c) 2018 - 2023 ZondaX AG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ #pragma once @@ -20,8 +20,8 @@ extern "C" { #endif -#include #include +#include typedef enum { RLP_KIND_BYTE = 0, @@ -29,19 +29,19 @@ typedef enum { RLP_KIND_LIST, } rlp_kind_e; -#define RLP_KIND_BYTE_PREFIX 0x7F +#define RLP_KIND_BYTE_PREFIX 0x7F -#define RLP_KIND_STRING_SHORT_MIN 0x80 -#define RLP_KIND_STRING_SHORT_MAX 0xB7 +#define RLP_KIND_STRING_SHORT_MIN 0x80 +#define RLP_KIND_STRING_SHORT_MAX 0xB7 -#define RLP_KIND_STRING_LONG_MIN 0x80 -#define RLP_KIND_STRING_LONG_MAX 0xBF +#define RLP_KIND_STRING_LONG_MIN 0x80 +#define RLP_KIND_STRING_LONG_MAX 0xBF -#define RLP_KIND_LIST_SHORT_MIN 0xC0 -#define RLP_KIND_LIST_SHORT_MAX 0xF7 +#define RLP_KIND_LIST_SHORT_MIN 0xC0 +#define RLP_KIND_LIST_SHORT_MAX 0xF7 -#define RLP_KIND_LIST_LONG_MIN 0xF8 -#define RLP_KIND_LIST_LONG_MAX 0xFF +#define RLP_KIND_LIST_LONG_MIN 0xF8 +#define RLP_KIND_LIST_LONG_MAX 0xFF typedef struct { uint8_t kind; From 0d2444e43b505ba311fc2e07b8c847caa04183ca Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Wed, 28 Feb 2024 19:08:25 +0000 Subject: [PATCH 4/7] add support for 44/60 path --- app/src/apdu_handler.c | 6 ++---- app/src/parser_impl_eth.c | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/apdu_handler.c b/app/src/apdu_handler.c index dca0f62..d9b9942 100644 --- a/app/src/apdu_handler.c +++ b/app/src/apdu_handler.c @@ -45,12 +45,10 @@ void extractHDPath(uint32_t rx, uint32_t offset) { memcpy(hdPath, G_io_apdu_buffer + offset, sizeof(uint32_t) * HDPATH_LEN_DEFAULT); - const bool mainnet = hdPath[0] == HDPATH_0_DEFAULT && hdPath[1] == HDPATH_1_DEFAULT; - - hdPath_len = HDPATH_LEN_DEFAULT; - if (!mainnet) { + if (hdPath[0] != HDPATH_0_DEFAULT || ((hdPath[1] != HDPATH_1_DEFAULT) && (hdPath[1] != HDPATH_ETH_1_DEFAULT))) { THROW(APDU_CODE_DATA_INVALID); } + hdPath_len = HDPATH_LEN_DEFAULT; } uint8_t extractHRP(uint32_t rx, uint32_t offset) { diff --git a/app/src/parser_impl_eth.c b/app/src/parser_impl_eth.c index 48f7684..e13e2e3 100644 --- a/app/src/parser_impl_eth.c +++ b/app/src/parser_impl_eth.c @@ -31,6 +31,8 @@ eth_tx_t eth_tx_obj; #define FLARE_MAINNET_CHAINID 14 +#define SONG_BIRD_CHAINID 19 +#define COSTON2_CHAINID 114 static parser_error_t readChainID(parser_context_t *ctx, rlp_t *chainId) { if (ctx == NULL || chainId == NULL) { @@ -49,7 +51,7 @@ static parser_error_t readChainID(parser_context_t *ctx, rlp_t *chainId) { } // Check allowed values for chain id - if (tmpChainId != FLARE_MAINNET_CHAINID) { + if (tmpChainId != FLARE_MAINNET_CHAINID && tmpChainId != SONG_BIRD_CHAINID && tmpChainId != COSTON2_CHAINID) { return parser_invalid_chain_id; } From 01b976aaacb012156499e302b824b48dd654657a Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Mon, 29 Jan 2024 17:48:49 +0000 Subject: [PATCH 5/7] update zemu --- tests_zemu/package.json | 12 ++--- tests_zemu/snapshots/s-mainmenu/00004.png | Bin 369 -> 378 bytes tests_zemu/snapshots/s-mainmenu/00010.png | Bin 369 -> 378 bytes .../00005.png | Bin 613 -> 0 bytes .../00006.png | Bin 608 -> 0 bytes .../00007.png | Bin 249 -> 0 bytes .../00008.png | Bin 476 -> 0 bytes .../00000.png | Bin 332 -> 0 bytes .../00001.png | Bin 352 -> 0 bytes .../00002.png | Bin 629 -> 0 bytes .../00003.png | Bin 417 -> 0 bytes .../00004.png | Bin 301 -> 0 bytes .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../00003.png | Bin .../00004.png | Bin .../00005.png | Bin .../00006.png | Bin .../snapshots/sp-eth-asset_deposit/00001.png | Bin 516 -> 516 bytes .../snapshots/sp-eth-asset_deposit/00002.png | Bin 899 -> 899 bytes .../snapshots/sp-eth-asset_deposit/00003.png | Bin 489 -> 490 bytes .../snapshots/sp-eth-asset_transfer/00001.png | Bin 516 -> 516 bytes .../snapshots/sp-eth-asset_transfer/00002.png | Bin 899 -> 899 bytes .../snapshots/sp-eth-asset_transfer/00003.png | Bin 489 -> 490 bytes .../snapshots/sp-eth-basic_transfer/00001.png | Bin 516 -> 516 bytes .../snapshots/sp-eth-basic_transfer/00002.png | Bin 927 -> 927 bytes .../snapshots/sp-eth-basic_transfer/00003.png | Bin 508 -> 509 bytes .../sp-eth-basic_transfer_no_eip155/00001.png | Bin 516 -> 516 bytes .../sp-eth-basic_transfer_no_eip155/00002.png | Bin 895 -> 896 bytes .../sp-eth-basic_transfer_no_eip155/00003.png | Bin 504 -> 504 bytes .../00001.png | Bin 516 -> 516 bytes .../00002.png | Bin 939 -> 939 bytes .../00003.png | Bin 507 -> 507 bytes .../snapshots/sp-eth-erc20_transfer/00004.png | Bin 379 -> 376 bytes .../snapshots/sp-eth-erc20_transfer/00005.png | Bin 338 -> 334 bytes .../sp-eth-erc721_approve_for_all/00001.png | Bin 516 -> 516 bytes .../sp-eth-erc721_approve_for_all/00002.png | Bin 915 -> 915 bytes .../sp-eth-erc721_approve_for_all/00003.png | Bin 503 -> 504 bytes .../00001.png | Bin 516 -> 516 bytes .../00002.png | Bin 878 -> 878 bytes .../00003.png | Bin 500 -> 500 bytes .../00001.png | Bin 516 -> 516 bytes .../00002.png | Bin 904 -> 902 bytes .../00003.png | Bin 498 -> 498 bytes .../sp-eth-legacy_contract_call/00001.png | Bin 516 -> 516 bytes .../sp-eth-legacy_contract_call/00002.png | Bin 896 -> 897 bytes .../sp-eth-legacy_contract_call/00003.png | Bin 490 -> 491 bytes .../sp-eth-legacy_contract_deploy/00001.png | Bin 516 -> 516 bytes .../sp-eth-legacy_contract_deploy/00002.png | Bin 911 -> 909 bytes .../sp-eth-legacy_contract_deploy/00003.png | Bin 507 -> 507 bytes .../sp-eth-legacy_transfer/00001.png | Bin 516 -> 516 bytes .../sp-eth-legacy_transfer/00002.png | Bin 908 -> 908 bytes .../sp-eth-legacy_transfer/00003.png | Bin 506 -> 506 bytes .../snapshots/sp-eth-transfer/00001.png | Bin 516 -> 516 bytes .../snapshots/sp-eth-transfer/00002.png | Bin 887 -> 887 bytes .../snapshots/sp-eth-transfer/00003.png | Bin 491 -> 491 bytes tests_zemu/snapshots/sp-mainmenu/00001.png | Bin 442 -> 440 bytes tests_zemu/snapshots/sp-mainmenu/00002.png | Bin 428 -> 426 bytes tests_zemu/snapshots/sp-mainmenu/00003.png | Bin 442 -> 440 bytes tests_zemu/snapshots/sp-mainmenu/00004.png | Bin 317 -> 324 bytes tests_zemu/snapshots/sp-mainmenu/00010.png | Bin 317 -> 324 bytes tests_zemu/snapshots/sp-mainmenu/00011.png | Bin 442 -> 440 bytes .../snapshots/sp-show_address/00001.png | Bin 769 -> 768 bytes .../sp-show_address_reject/00001.png | Bin 769 -> 768 bytes .../sp-show_address_reject/00003.png | Bin 346 -> 341 bytes .../sp-sign-add_delegator-expert/00001.png | Bin 792 -> 793 bytes .../sp-sign-add_delegator-expert/00002.png | Bin 523 -> 520 bytes .../sp-sign-add_delegator-expert/00005.png | Bin 793 -> 785 bytes .../snapshots/sp-sign-add_delegator/00001.png | Bin 792 -> 793 bytes .../snapshots/sp-sign-add_delegator/00002.png | Bin 523 -> 520 bytes .../snapshots/sp-sign-add_delegator/00005.png | Bin 793 -> 785 bytes .../sp-sign-add_validator-expert/00001.png | Bin 792 -> 793 bytes .../sp-sign-add_validator-expert/00002.png | Bin 523 -> 520 bytes .../sp-sign-add_validator-expert/00005.png | Bin 793 -> 785 bytes .../snapshots/sp-sign-add_validator/00001.png | Bin 792 -> 793 bytes .../snapshots/sp-sign-add_validator/00002.png | Bin 523 -> 520 bytes .../snapshots/sp-sign-add_validator/00005.png | Bin 793 -> 785 bytes .../00003.png | Bin 761 -> 752 bytes .../sp-sign-coston_export_c_to_p/00003.png | Bin 761 -> 752 bytes .../00003.png | Bin 761 -> 752 bytes .../sp-sign-coston_export_p_to_c/00003.png | Bin 761 -> 752 bytes .../00003.png | Bin 761 -> 752 bytes .../sp-sign-coston_import_p_from_c/00003.png | Bin 761 -> 752 bytes .../00003.png | Bin 761 -> 0 bytes .../00005.png | Bin 865 -> 0 bytes .../00006.png | Bin 450 -> 0 bytes .../00007.png | Bin 355 -> 0 bytes .../00008.png | Bin 541 -> 0 bytes .../00003.png | Bin 761 -> 0 bytes .../00003.png | Bin 775 -> 777 bytes .../sp-sign-flare_export_c_to_p/00003.png | Bin 775 -> 777 bytes .../00003.png | Bin 775 -> 777 bytes .../sp-sign-flare_export_p_to_c/00003.png | Bin 775 -> 777 bytes .../00003.png | Bin 775 -> 777 bytes .../sp-sign-flare_import_p_from_c/00003.png | Bin 775 -> 777 bytes .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../00003.png | Bin .../00004.png | Bin .../00005.png | Bin .../00006.png | Bin tests_zemu/snapshots/st-mainmenu/00001.png | Bin 13974 -> 13987 bytes .../00002.png | Bin 16985 -> 0 bytes .../00000.png | Bin 8278 -> 0 bytes .../00001.png | Bin 17082 -> 0 bytes .../00003.png | Bin 9182 -> 0 bytes .../00004.png | Bin 11608 -> 0 bytes .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../00003.png | Bin .../00004.png | Bin tests_zemu/snapshots/x-mainmenu/00004.png | Bin 317 -> 324 bytes tests_zemu/snapshots/x-mainmenu/00010.png | Bin 317 -> 324 bytes .../00000.png | Bin 451 -> 0 bytes .../00001.png | Bin 403 -> 0 bytes .../00002.png | Bin 407 -> 0 bytes .../00004.png | Bin 348 -> 0 bytes .../00005.png | Bin 865 -> 0 bytes .../00006.png | Bin 450 -> 0 bytes .../00007.png | Bin 355 -> 0 bytes .../00008.png | Bin 541 -> 0 bytes .../00000.png | Bin 451 -> 0 bytes .../00001.png | Bin 403 -> 0 bytes .../00002.png | Bin 407 -> 0 bytes .../00004.png | Bin 348 -> 0 bytes .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../00003.png | Bin .../00004.png | Bin .../00005.png | Bin .../00006.png | Bin tests_zemu/tests/transactions.test.ts | 50 +++++++++++++++--- 136 files changed, 48 insertions(+), 14 deletions(-) delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00005.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00006.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00007.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00008.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00000.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00001.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00002.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00003.png delete mode 100644 tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00004.png rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr-expert => s-sign-tx-eth-path}/00000.png (100%) rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr-expert => s-sign-tx-eth-path}/00001.png (100%) rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr-expert => s-sign-tx-eth-path}/00002.png (100%) rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr-expert => s-sign-tx-eth-path}/00003.png (100%) rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr-expert => s-sign-tx-eth-path}/00004.png (100%) rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr => s-sign-tx-eth-path}/00005.png (100%) rename tests_zemu/snapshots/{s-sign-flare_c_export_p_change_addr => s-sign-tx-eth-path}/00006.png (100%) delete mode 100644 tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00003.png delete mode 100644 tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00005.png delete mode 100644 tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00006.png delete mode 100644 tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00007.png delete mode 100644 tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00008.png delete mode 100644 tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00003.png rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr-expert => sp-sign-tx-eth-path}/00000.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr-expert => sp-sign-tx-eth-path}/00001.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr-expert => sp-sign-tx-eth-path}/00002.png (100%) rename tests_zemu/snapshots/{x-sign-flare_c_export_p_change_addr-expert => sp-sign-tx-eth-path}/00003.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr-expert => sp-sign-tx-eth-path}/00004.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr => sp-sign-tx-eth-path}/00005.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr => sp-sign-tx-eth-path}/00006.png (100%) delete mode 100644 tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00002.png delete mode 100644 tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00000.png delete mode 100644 tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00001.png delete mode 100644 tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00003.png delete mode 100644 tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00004.png rename tests_zemu/snapshots/{st-sign-flare_c_export_p_change_addr-expert => st-sign-tx-eth-path}/00000.png (100%) rename tests_zemu/snapshots/{st-sign-flare_c_export_p_change_addr-expert => st-sign-tx-eth-path}/00001.png (100%) rename tests_zemu/snapshots/{st-sign-flare_c_export_p_change_addr => st-sign-tx-eth-path}/00002.png (100%) rename tests_zemu/snapshots/{st-sign-flare_c_export_p_change_addr-expert => st-sign-tx-eth-path}/00003.png (100%) rename tests_zemu/snapshots/{st-sign-flare_c_export_p_change_addr-expert => st-sign-tx-eth-path}/00004.png (100%) delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00000.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00001.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00002.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00004.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00005.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00006.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00007.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00008.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00000.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00001.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00002.png delete mode 100644 tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00004.png rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00000.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00001.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00002.png (100%) rename tests_zemu/snapshots/{x-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00003.png (100%) rename tests_zemu/snapshots/{sp-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00004.png (100%) rename tests_zemu/snapshots/{x-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00005.png (100%) rename tests_zemu/snapshots/{x-sign-flare_c_export_p_change_addr => x-sign-tx-eth-path}/00006.png (100%) diff --git a/tests_zemu/package.json b/tests_zemu/package.json index 4959f10..b66bb6a 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -19,13 +19,13 @@ }, "dependencies": { "@zondax/ledger-flare": "../js", - "@zondax/zemu": "^0.46.1" + "@zondax/zemu": "^0.47.0" }, "devDependencies": { "@ethereumjs/common": "^2.4.0", "@ethereumjs/tx": "^3.2.0", "@types/elliptic": "^6.4.14", - "@types/jest": "^29.5.11", + "@types/jest": "^29.5.12", "@types/ledgerhq__hw-transport": "^4.21.4", "@types/secp256k1": "^4.0.6", "@typescript-eslint/eslint-plugin": "^6.19.0", @@ -33,17 +33,17 @@ "blakejs": "^1.1.1", "crypto-js": "4.2.0", "ed25519-supercop": "^2.0.1", - "eslint": "^8.55.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jest": "^27.6.3", + "eslint-plugin-jest": "^27.9.0", "eslint-plugin-prettier": "^5.1.3", "jest": "29.7.0", "js-sha256": "0.9.0", "jssha": "^3.2.0", - "prettier": "^3.2.2", + "prettier": "^3.2.5", "secp256k1": "^5.0.0", - "ts-jest": "^29.0.3", + "ts-jest": "^29.1.2", "ts-node": "^10.9.2", "typescript": "^5.3.3" } diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index 0a432139b1aad4ceac45ef2e6ba3ee4ff55dd2c1..d9de24d5ab42348669e212466ab15b643bc16ebe 100644 GIT binary patch delta 351 zcmV-l0igcz0{Q}wB!59kL_t(|ob8$24uc>Jh0)CSe_$`%1%{M@QUsfV=gTgP>qJg} zD9kwk003WQQ5xsi<6*b+&ax@JfK`5~qkUfP6kP{gLGvRx>DYOqWX%R=RUPfvc`foR z+xc;^%IS61Y-DVdpc^%r+_UH&kU5}s+Ew-8s>rlIc?5Jz(0^m5(>-9o0U`G9!=IW> zRET8z0Ac$P%;pW)?)1xmiK0@I+#>87@GBs6EvcU5PLct1`vbbb^o;!xuL1Nsc1<70 zNWFzMASFb0EY8X;0@*x}s1LH_)OSz1AmLy_iv3l)foj}004j?`2%DmnePV5(xw0a002ovPDHLkV1h2dsNnzr delta 342 zcmV-c0jd7_0`UTnB!4(bL_t(|ob8#x4ul{KM5|f<|ARfa2Mj5t2ncBq=4B7Y?aDfB z2T&pa006798I5zD;jqVjW;=}jz^MF8M_XR*7~2G-;Qir~be*zM)Uc1Un~rv!(u*A1 zaepXOIX+gyzRVaF^q{7Ydlub2WeKRg?J9prnN0hYzksa;y?H`%`eR{JBDjckk?E0!bU~KAFK^<>0`*^24V0bDM;O?_F z2V(0q*G{UD%1;D1;odnC|81`}61(UnENH0WUCx3)Z>$o)D>Q2q*-2ueS;Xq4JS860 orCvr7DXvl;00000007434@Sb9>d5OziU0rr07*qoM6N<$fJh0)CSe_$`%1%{M@QUsfV=gTgP>qJg} zD9kwk003WQQ5xsi<6*b+&ax@JfK`5~qkUfP6kP{gLGvRx>DYOqWX%R=RUPfvc`foR z+xc;^%IS61Y-DVdpc^%r+_UH&kU5}s+Ew-8s>rlIc?5Jz(0^m5(>-9o0U`G9!=IW> zRET8z0Ac$P%;pW)?)1xmiK0@I+#>87@GBs6EvcU5PLct1`vbbb^o;!xuL1Nsc1<70 zNWFzMASFb0EY8X;0@*x}s1LH_)OSz1AmLy_iv3l)foj}004j?`2%DmnePV5(xw0a002ovPDHLkV1h2dsNnzr delta 342 zcmV-c0jd7_0`UTnB!4(bL_t(|ob8#x4ul{KM5|f<|ARfa2Mj5t2ncBq=4B7Y?aDfB z2T&pa006798I5zD;jqVjW;=}jz^MF8M_XR*7~2G-;Qir~be*zM)Uc1Un~rv!(u*A1 zaepXOIX+gyzRVaF^q{7Ydlub2WeKRg?J9prnN0hYzksa;y?H`%`eR{JBDjckk?E0!bU~KAFK^<>0`*^24V0bDM;O?_F z2V(0q*G{UD%1;D1;odnC|81`}61(UnENH0WUCx3)Z>$o)D>Q2q*-2ueS;Xq4JS860 orCvr7DXvl;00000007434@Sb9>d5OziU0rr07*qoM6N<$fgdoc$kie?MSV?hwzZ~#pTAW z9GEFn8n;%)NPMu9_EaSz(pb#VOE=EvDHkSkU!Sha2Oh8;Uq-o_BXo0M{ct-Vc=7>9 zcintgKir4#1rH%LcW-IbO^iQXI9I`gg$JT>mpl;w_A<$D;WA?FLUS8?7e-@iWx!V) zh^;XY=gvUFO>BxiV3gRSoCOdh_RJ3P{Qj;i73A*wyoo76X@UF!ih)_+(nXP2fyy($ zc5}c+OczwT?s}~zu+=(B8OoM&Cj~6tB!$Kz2j0n_<}}HP17*0}BQUR=GC8*D-C*4T zvB|?950QPrWd-Bp%Ob{y^-2dko<|fdBD!Rd=pOEQl}Y^Icgvr7)a-z?AQR6?a$N&G z1dZo;%i97n5zQ=Y>MblREc{QL(q{z4oPg7aJ?SINU#XZlE01iN_ahLBbG#S4p z*B5gfoUbX%9$1qqf~s^+hniauKH|IQ^qRL|%3FtMrs6%P$Xw(z>LR3%5=8=AaRRSC z5apC*kE&6If=32zFJx*nqd6(QO@wk(?s&rolJ8<*_Klx&`++zZ>2dwVCk$os|ZroBwc z(VXZ0G1$fDQ;o>rxmcseHojKNxhjNA@8d&CF_;0{^T#RaW6U<&zY}<$z5$?_VxSSQ z?GE0j?$QhMAoQi(jg9~uv`I&a6&YsM7PR{W zB-BoEF}F7B*Cs<2qQ!PjEI?unGtbi&78Vv1Jfnyvig%q||L7{#HGv3>lx-tH$&=pd z-a!TZmWhJ7)<6Wb1njZ-$KAA}$I-3{9S5?ZTmv#vHA(;fDh{Y{MhBqS?1(Rn_v?tK zbW##ODQiWsj?6!1KydsIGGU{^h4uj1rF2LK?!=?ba(9ToS=4Za_vv2*0KrAxr!y{L udm7;qh4AQ6hf&zrvj;(0V}^x=@%RIPJE-*DUGOac0000IF8>~K zzhRaAS`H?-=QM1i=Tu6{1-oD!M<5AJP1 diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00008.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00008.png deleted file mode 100644 index a0d6c575727e8f2a6bce5d8219ecafee364a3b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)sG^UaFWY zBgKx!L5VP!BWkwLRtH#)A6RVGe4miG4DcTS66iSvrK7#@(gd|kum^lRxby=W4}S*e zb!H+`Vo=`^&J0NJcO!WpdQL&c!4wTQ&q&kUqlMt#1MWPzzfSphoO?hm4g;Oox{|~# zToPC+teF|k3@8s7?tOA4DPB@?|6+kPy$_@70CCQ8oe|f(t1z|>Xzc-Y%HzK{EYo?x zDNlH7A=Z7zNmzFMfzf};i`R1#x(=5KHl5u$;i8)C~wJ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00000.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00000.png deleted file mode 100644 index 21ca4e33adac16f841ac6602e788902e09679d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA64Ffa;xx;TbZ%y~N_R=in(qpdjo z?|=C>t-CV>pB^umx?u15o2~6fGMKpXHo1McedBCZ*&XK(&+NPM9rU%sH<};LoHx&uKYnAA6VG_qgMS+x;p#57s+zuQ|4-^sGnm2R`%qvs+)APTjy!@iOX@ z%eSA)+j%2&mRY=*rSW^VkK@Nkt(k|*HI}cKcZ%)gBIcGuUi_LI4ZkxYI$|#+uZVJq zct1n0dtH-w*vaLeN}oj8%82sjJ3gJwxqrS#o}(q-uBXphHXJr&N=-lWvviGWz1I9S zx3(KZvQM!TmY=+H&y|O4bNu-V4_#cGD4X!OdF@3lrfGJLiq#hsbzW*rx&J9xd>t@2 cVBi4rPlmrLGgCCG6{106p00i_>zopr0O>)FGynhq diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00001.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00001.png deleted file mode 100644 index b0a05f9499762c511ef389164235171fb41e805f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)Kf(8o-#>P{R zyEIG=+87)a4b%R0(^HjTI~hmf&2De?VoNmd6=EMFKy72=ywHVJfk7npFE4Etk8szd z4TlI=Q;-rD&2@SR@j4HChp+dA>GSCu@bWS0cCkOvsW2ARvMj$ul1mZp-opqXw<1)Z z0aLA!d`lkA{(K=hh2imSlVi!jaqfz7yuxZ}oVJpNT4`UiRe?+9RV9_*42S$9XZXAO z*aP0sTPtq>$uZ_1>3}55m!x?0kWqmLYyj5Sk~PJf)H?K)g4A+)#)a!&&oqyK%_O|I y$1ap)M=tr>0O{wwlMq4(A%qY@2qAQ8{~z23_dyqFZUji6I-cq5tPql8FhHUJIkpc(KvBzf`O?@v$1lHREwYmC zWSaWAO-jngOn^>CnvV!FMB#e2E^lW`W)fm!YT3C}U9uQ?j|zv(+bh5f?VwH$_A;azpiWr6av0D11Wh38hNEVT!ofr;$Bes!O#I*635yNx#D@o~d zm|_gk2e9*zG)8T+ynvVqu=oNU1Vbwml#kI?8a2LfQi1u$fD7X(MNGyY=WKV(mpYcH P00000NkvXXu0mjffLI`{ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00003.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00003.png deleted file mode 100644 index db289954d93eca9b3b268488207dffef1e0eca65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmV;S0bc%zP)&!hdMk=B8LO~$nyq@GiquJss+b~|w^%Bq8qj+1Z zd@-0)?=HKnH9n>T+QwRccm$&woHy&V7<=jtqH4^R6x*RCc4kF!yz@S$4*A*@#;Q+i z1|*#FU|QD82@!VtD}t#{TLvU--3wG+<+wF(b4BDJ-9s{TX_=#hU81M4~`Vi@HL?J>q6g~USSl!D`HMBZmfF#k!ri^ zKRx6qAf_OG@E{)gjp9MyNsaMhv3BCt4$>Ou4AA2@Ncs;x{;D&43X1XBjz=#CdF)pS zLXwQD#zj0KsNWIf5j-wdZx2U%Kz16lV7`;=13gLL&TmT9$UgS(>4&$f8zEx8u& zf>{UIJq~Ri;G?RspU;ZqW$v^sBc}XRw*UZkD6IijzTMg#Y(VSkU)t+sqrMJimYU#k zH$KrlH*V3`@^#Pu@*VMb{N2$ia|8ZWe|7-JY^r=qi5GiNxbh9C*VvYv?!81h$wf+# zyPO^w!ZPn&t}p{ES?|4dVBZM<000000KnV;W-EVO&E76#00000NkvXXu0mjfNVtUf diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00000.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00000.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00000.png diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00001.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00001.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00001.png diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00002.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00002.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00002.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00002.png diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00003.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00003.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00003.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00003.png diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00004.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00004.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00004.png diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00005.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00005.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00005.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00005.png diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00006.png b/tests_zemu/snapshots/s-sign-tx-eth-path/00006.png similarity index 100% rename from tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr/00006.png rename to tests_zemu/snapshots/s-sign-tx-eth-path/00006.png diff --git a/tests_zemu/snapshots/sp-eth-asset_deposit/00001.png b/tests_zemu/snapshots/sp-eth-asset_deposit/00001.png index e642da4fad463a0b6e03f5ccc5b9398599cdc43f..3abb52356a1540fa2e0866eb83dd42b5543b8124 100644 GIT binary patch delta 92 zcmZo+X<^y0fidK>W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1p^cKVGe9$oXyoMhp+rW7kW-To4X*s&h(C;*@_v$V(AXw#@nXUYCLv?RZ|S4HDTCBk~hq zyeN+Bi}y1^FlitUDZQyL`R+S#(Wb3y$?0Y%=mdn6LVp$aU0hWq(?tQ|4bednEyPI0 z?w~;vpsL|Fq?*yAO2Iwq&>;6{ss@hu@h9M(u?A7U|GW@9wm=zL%x~+qzL+aR?K3k` zhPs;T$gLe!u2dz25JCv~%Vf$>qs3NCb9G^B9Ia68a?n*%(&8whsi1`9z?=>Wc31Cf zH`<}9dVi|zJk)~dC{O;EBn~Kl;=+;Y@J>PZ0@Z@f3orwyHmdXp+C()Rb!ofWt!fZ@ z6W%*>?(PG#LFi)CXqe%ax$bUDCM5Cjs1%cl)qJI%iO@REefye_g9jP6W zQByOUToax1F6>&XJ-DZVt7oGfhUlP(7Gk7g zchH~-P}T4oQqAa5rQjZQXpnm}RRc%-_!Dr?Sc9nFe_jY4Tc8Xr=C^fQU(A)E_L-R| zLtV{v?12qA?0Win-`(PAs6xw^15j#j94Iq0e>X>keNShL=N2a72YWR+%OUjqX)psGL#TP2qA=!T~F=sNr0DqDvxrni!gYgKMf{}VK8)%jE6^RMq(Y2_BS z&f~mzk;T4eoWISStQ3~0GBC&-y0ar{_stJ89`d}9i92iKZ+Gv9bwUJF?S%Q<*X}+( zBl+S&{-I}~D=O=6?qcEFv;WHf7Z2mtocX==;p{ZF{|nYNtyay*`*+mpv)+k{lfldU z=D$4s!F%l|^A`*+|C!wAns`B;@A}SPrC+v0hs1y3iMW+_UhPi(g~`iBrv+L46)O(7 z=dIi4e^tlms(nvj)~b4gUk`lNIHgO8%(RQ>`ozS53Qq4~R64hO{li@UZjgkhtDnm{ Hr-UW|bY^|a delta 259 zcmaFG{E~Ts3gd=}s^{uucFrr!xtO*gi+{o*hibO~?UUbB_fJ{&YV)U~&$s5S>YF%K z`_kuDnZEUvhxYYO;N!^TWMF7FFkg2q&&(#xg4wD)-1z+De)E5P64M;ypFD3W{ccgr zX7y$EhDy<_d-2=!8kyhgf3>grA+G(oF89Z>nFsAxtbUNiIcs+P#&dhPi^@MuS$R4A zm(ib~)qi-c9Cq3BZc9@6(tfyfU7f7$Td}L+w#?JE-QLXkUH;3H%+{q-{PrJ}nesiT z`*E;ox6fDp=c)I$ztaD0e F0sx}Tbk6_) diff --git a/tests_zemu/snapshots/sp-eth-asset_transfer/00001.png b/tests_zemu/snapshots/sp-eth-asset_transfer/00001.png index e642da4fad463a0b6e03f5ccc5b9398599cdc43f..3abb52356a1540fa2e0866eb83dd42b5543b8124 100644 GIT binary patch delta 92 zcmZo+X<^y0fidK>W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1p^cKVGe9$oXyoMhp+rW7kW-To4X*s&h(C;*@_v$V(AXw#@nXUYCLv?RZ|S4HDTCBk~hq zyeN+Bi}y1^FlitUDZQyL`R+S#(Wb3y$?0Y%=mdn6LVp$aU0hWq(?tQ|4bednEyPI0 z?w~;vpsL|Fq?*yAO2Iwq&>;6{ss@hu@h9M(u?A7U|GW@9wm=zL%x~+qzL+aR?K3k` zhPs;T$gLe!u2dz25JCv~%Vf$>qs3NCb9G^B9Ia68a?n*%(&8whsi1`9z?=>Wc31Cf zH`<}9dVi|zJk)~dC{O;EBn~Kl;=+;Y@J>PZ0@Z@f3orwyHmdXp+C()Rb!ofWt!fZ@ z6W%*>?(PG#LFi)CXqe%ax$bUDCM5Cjs1%cl)qJI%iO@REefye_g9jP6W zQByOUToax1F6>&XJ-DZVt7oGfhUlP(7Gk7g zchH~-P}T4oQqAa5rQjZQXpnm}RRc%-_!Dr?Sc9nFe_jY4Tc8Xr=C^fQU(A)E_L-R| zLtV{v?12qA?0Win-`(PAs6xw^15j#j94Iq0e>X>keNShL=N2a72YWR+%OUjqX)psGL#TP2qA=!T~F=sNr0DqDvxrni!gYgKMf{}VK8)%jE6^RMq(Y2_BS z&f~mzk;T4eoWISStQ3~0GBC&-y0ar{_stJ89`d}9i92iKZ+Gv9bwUJF?S%Q<*X}+( zBl+S&{-I}~D=O=6?qcEFv;WHf7Z2mtocX==;p{ZF{|nYNtyay*`*+mpv)+k{lfldU z=D$4s!F%l|^A`*+|C!wAns`B;@A}SPrC+v0hs1y3iMW+_UhPi(g~`iBrv+L46)O(7 z=dIi4e^tlms(nvj)~b4gUk`lNIHgO8%(RQ>`ozS53Qq4~R64hO{li@UZjgkhtDnm{ Hr-UW|bY^|a delta 259 zcmaFG{E~Ts3gd=}s^{uucFrr!xtO*gi+{o*hibO~?UUbB_fJ{&YV)U~&$s5S>YF%K z`_kuDnZEUvhxYYO;N!^TWMF7FFkg2q&&(#xg4wD)-1z+De)E5P64M;ypFD3W{ccgr zX7y$EhDy<_d-2=!8kyhgf3>grA+G(oF89Z>nFsAxtbUNiIcs+P#&dhPi^@MuS$R4A zm(ib~)qi-c9Cq3BZc9@6(tfyfU7f7$Td}L+w#?JE-QLXkUH;3H%+{q-{PrJ}nesiT z`*E;ox6fDp=c)I$ztaD0e F0sx}Tbk6_) diff --git a/tests_zemu/snapshots/sp-eth-basic_transfer/00001.png b/tests_zemu/snapshots/sp-eth-basic_transfer/00001.png index e642da4fad463a0b6e03f5ccc5b9398599cdc43f..3abb52356a1540fa2e0866eb83dd42b5543b8124 100644 GIT binary patch delta 92 zcmZo+X<^y0fidK>W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1pR-DpMYJF5JCv~)$CD2t0yz?cpl3#vlCqNLHq=+%vbldVwD= z40HQQFYg}+ef)qp(AQr^Nu2}UGSn4L; z+jFI~Xxxz(B={$&Aew-xu($4KSC5afH^}BcVlyI?R38QXc*JUD8kOfC2^$a6v|L=J g2_b|KLI`<;|B>a6El>D@!T}+6VpK*ao-_UXe3bBx6{N=c;rM$V zuYVHj6R;~1LI@$hnmuZ0^<)MLim@y+JHa&{#82SL?9OcU-f2}FkV{Qg%yhr_0e`-f zN^)txjgW5gCt*`xoPQ~`3bLl^xfHf%a~uaa&9SSe=*_mLxqq7m>GP+43T*@+{G`T1 zA=2Z!Q$O3wFg{X%terD z+UZKwTcAFvhJFw)b9=0KkjGH%3)zJAkt^PW11CW%&nyif-jL&CDAFAm(nzQ3h1w_X zAanFz!x(Cg{(sAG4n7H2p-++wGUwn?^zi0tC?cv1=VTTfOuZ&%t5oI;ngplY*t4md zrVUdkeS+dBi9d}?X6uwAuoM`3gTiDFJ`c> z*?9fT0!@Ivz4h|nB{d_&=`Z4`A`+{lvkvh80KSHYQ`K3~3Yfj8`l8+g^e@P!7x?kQ zFt?u+(-pWa^T~-2LI@$G0s3yJ`8Yl@ozfH(K|hV>4^RKV;#lTz1t~8jy?%j2i;6PP#`odMJ6IuXhs+(IG()7?KFaPU5Kf^(O30X z+)rSMd)8fefr0Vsa%=~w>B!N$bhMJ6bdF7%R4YZg#sya-NI^6KVnJ-|id8>>rEcQA zJy%ML#vOS!;OsH5>C~J>rwEdI!8bw{~*)JpQ2Cg|cG8rlnTfORtK@dOw+AXj9+SZ~eaM z(xsR+7dL*BU!AyiQP0!$uk~f$&+L8ora^1&waz6H)2DoXd2L>)Y_9#fnx0P*yR2EO zwoZI^EaI+K^zq2pY>5te%Yj~P4yDB1?pi7t$8Q;$mh6LF*2Zl chTJ+v`GQ#w*OXmd!vm7>boFyt=akR{0DQxRQ~&?~ delta 279 zcmey%{D*mh3gh94s^{t_W=9@3%VpdBjp3xw7Ne#p$4A{Up1v2;f41*GziZ{Lo;NWQ z?dG3;_+zH}o9z!TG3x0uGW^NT+rCij*B7($;F7N*8T}_HIje6{^fnVI&HDF^#ZTurAnH|RG-%D+L|8ge!E{=ez8s4JHN)b z+$FmW!?vHgRv30&icQk(o2iF>xevR^WS?*SE0@fABkv}Er!(}0U$e?(_UMUm45%Ps bcD$VFtcR;iF05qW21W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1p~D@gb9?=p*l&QUOb8)_{MT4&s3F1_nhc`$*fy)pyDChsN)IJ~OPBSKER#WRLH{#$+Z|BT;{5I>54$S^LLOs+zTb7`DMX;Vkq{oJwXJ+={GT|JzVk{#0$; z^Q7D+x_db3YiN^r@SLQ&+E}~!#6aZF=`^U?O!m?kmqk~nP%wWZIIgYYmM#S+VNkoj z?yE;CmzAEgvME0^CnQzGCDQ;%+?C83%HGyW?LzV3$eooUpca1`(iy`IfIsAUPNw8) zAt2|z4ZWspaPH2{A-#9-{YmuBO`Q8SbYD39N}L9eufV{yD6wQAX}C;g>MOj>1fGM; zt(M7Ur*uLHA%u|c!%;&+x@JN*4S6+j{%qzBPmOHrBI?Q35W7MmYX(GA882*2)X-K# zvSs2Yq#)Z~{tAC8xOPF%r-{!CgAvpw8~lW>*Qyh! zxwTgtxP=;O>*$+)(S*3%s0FEwDOpQC@M4StD+AS>t-=D>uc`sx3w z;OogO!k{*ZOy$TOMA3AmM>Pn(*cg!sA%qY@2>E^d1C$fD=!qEOYf=CJ002ovPDHLk FV1k?_QTPA= delta 670 zcmV;P0%84t2mc0;BmqW|CCz`GS2ezGF}Q0DXhQ|++P1C_8Xuo6G8|f|238xYKSm~CWELww#`azRE5b^>7fL0$8z}& z7ls!SIpk=Ro-Wjl?3SC8OAnodL&GBKSW^0q*R#K`gl^m2Z-8+$UB!PG3a}AD_7Qc= zjvWno_^EU`y%+-DYHD5OW<1>l=pGvZ} zo|M}}cMm6h4Q&z+o|9Bp8*4Y87>N8iod#8#$zB@cvgqm*3g&MF$F)`5(xu=e3~Kk+ zef3D?veI)_HsxpLgrthNWEud8yOKFW+1pyFT__$LxwBFP)IxtlI%Bv2@P|Cl$&_3z z1mxVeq1TiR&fU2=r1uWKKZ)MCiF4nE?hA)siPHe`6&Sb{C6+8C4VTGGeTBD~z;lqf z)iSy4luigCgb?z5IBIA}*G%Z9A+ILRpUvFisgZ46L_OIWVpm9H&47q18ro_| zwoLql6lB}WUqOEb*DeV9H1TT+z|@Ss*)-xG$bbPbMz0j!7tGeWCeY~9GH+)KmA`7 zd_9>(7}O?_sT{e3D4MSHs0P6o8zV9ygb+dqA-|7*lYA2BiR@eb-2eap07*qoM6N<$ Ef}LhUMF0Q* diff --git a/tests_zemu/snapshots/sp-eth-basic_transfer_no_eip155/00003.png b/tests_zemu/snapshots/sp-eth-basic_transfer_no_eip155/00003.png index 81b33023f6e960a69e9b9e3316b2a5b377205672..de352b4e817c421c7b54ab5625eb654f2287e3a0 100644 GIT binary patch delta 469 zcmV;`0V@9Z1NZ}wEq_~X#2^enQCf8;?0-qwOFybX2pi)NLo(BQzM_SUiT9cMJn}cI%coOc|xginov!Adsy`D4@YyL;1N)IeSfKUJtmUledM^wFG=*f zCipP^#LTAZ4VnqTBVc0IZXP@}*oO&qeiD)xTgE3LR`3W2SKi#{=~sH9=h>xSvQ^&z zkBc43GY>eIE1r35(Z^ubHy~9By3&JsL5`PnCN)i))fa!)vZ}I7S~(+qzL3T7GgsJe zBcuUBY61ZG*MGuxL!H!xxxHFfw|7!!6<9*qJ4mIBv2ok`iT9?iABLL^6QPV1{d8qk z*z}*U|5fLD-*nb)@9aAoKs^AlZ>pPd#_qAYO|2fJG+3+F>TOI zGTGloNj2Huj5fFvv(TLeNu~{!BE0|r0000000000000000KhW8&xMWAc;i7B00000 LNkvXXu0mjfw0PX& delta 469 zcmV;`0V@9Z1NZ}wEq_sN!ypWRVK(h1-2X_q%O0j8gpF~CA!+x2PgO@;Vjy8AB>(^b zV7srVK*w>E&pGE_1NBd`!Lac}{JLdnR=V9>C_7WPsUuwU9TKI;IoG|cN97^vE~!~A z}Vv4U4XxN_&lOusS{J=ZRMldXCO zcwC%Np67sb=6arEi(Uq+-T|pf(3Kg~3v#@qGpT9Dtp4!#S$0*nNh_a7pD$!{{LCHp z+Xxweke&bl{(rTwYN(T1N3@HJYI!Ghc7Y|7T|p{sjKXd2C*GU7e;5`UCPEoI`svQB zu<1Wx|EH>Pp^I+Mf2`Pha85g~O6G3W6G}DW8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1pbqxAUjU(d+e^&&P3C2I^1Jz%@?zUoBTN zSx{!O8f?Yi!0_gnVwQr$iAA-)ZZo)Q4;V`Wy)%d`C$Dctq;+tg z$@l9~!a7zoG2TBMf9CP}C-HsiojfR(1>) zja3Z}$jHnWmGz~XIa9B*Gd4k&iAX|qK&=3)c2bF4aXwgs02B;`TZan}aY-^u&^jvz z9IB+jFce@lL_%L9iPo!xOb5tix-OslLVQTjy#uU8a1g5-xqo4*3v_x71;%ya{0BX{fHhSJpC`Zv>k@FcwoJ&DuE-3ONg26I|Or{1b4N7CzTeQe(lMp7|=;Wk#b=mDAP2${yvE<48570G}_EwR! zFljZ4teuquqkqdrKRNiQ!wSp>ccPHPfAhmcTpuQ6@=Oj^bX+55UOxHHxD7Q+{7K8Q zx4h+Yz_D;{u0yi}wiV57f`oy5Q>%O9WQI|@Er)13Y`Df|2RtGT-UeU0tJ@*}Jz#kM z3s3An(cNB(jd|29O%c9DkvzM9uZR>j$UABoNY2aS_X> z`X&iD8t0DKKphK-qoJT64c8%1y!&S}x|xEwq~OmO~D|17s@euWA!8eoAna#NGq#!PXmFIiB$E7i}?ig$1` zN$p2>D%Vmx17_9F)YmyNh$hK-b9^&Imu=2n|2Q`iHIp>OGk+klYHtsQ=DWM@NBdWG znAnhbif2GMv+;dZ&miC$Dctq<8R` z$@}Y3!a7zoG2TBMf9CP}C-MFORAtgMP1F2pC^ZxaIF>Xx@5|TSsMxZG0N$_-5NMfp zsfrfRpj4YASd&Nr6Mt=N{!RF-5mMb{yqyQj=y`G7%NI2O>iojfRt^jn zja3Z}$jHnWmG!2YIn%ClFg8J#iAX{XK&=3)4pNC+ab8$O03Hm5TgwHAxFne+Xq}Y< zmMUp53iFc09cFQAXYbW!+%s4==2&2j-l?ZklR}2 zgUp?o1`5|Q(+!xN+`WGrN>_L9-%O9elk_U|Bu*#y7+i|%URDitMTmKgb;qH-Gy=&% z8em}(yLA;543;ruGBsdnP#U}5qK~XL31QNWPELAPm)%~ZNt`!fEO|2j19Z)#z4b_1 zn6x@Yw$93d(SK#5pB#MDvI4WgohW4aZ+@7F>&1jjp2@+Aj$6dc%P0RCx1nZ9P17{L0i=d9M}Md)QFFcT`oSqN34}CM{D|dK zy^{nSjdMqAppJ#a(NIv3hU*ZhUan8AGD4L;x1}XA?D}_KCF&jGv0001N z_hS|4IF9h_y)R|R{!3+sc6) z3bO3Hk4Y3M)GryBr4gqIm5q~xO5)e2MJc^Gn++MyfH3Mqy?^65;S}#9=Z(KOG47J! z&G-W=TUKe(3^1Mn1FLpYuxqk68&tU^I5D>>TY@d)8DK8Fd1a)}j6_Y@r90WGJwRh} zKxx(i<#9!`jxE{@R_y^UYM_}BR0?ujTu;*^eHK5Q&$6mAk6XDSy`Rb9_?ai{f5W5$ zOlkrE_-baip?`YeY+k=|NsjQ@OP+d)%bgdMm$Ic=y+P%y9jDZ9BbxUU%7?CcuCVW$ zu>O6{vA^g2-#^|@mEm0aGbs{(_06V~qGdn2IiQeb}s#GN2Y&2K@x48K> zG`rJQZf3foDaotWu{dL%H3O2)c=MusNjqTCYfo;fp;36(Pn)uoOmTZxp+@uGz94>s zVk6V~+hm%W*58aixD%_;of?fyA1p=l0ssI2000000000000000%lrY`Rip)rwPRWU O0000I~4B zoKTv5Ksj?Y``DtxVAUDmq7IswL8Tza#r1SeGG_6`c`chN%ea+0()*db96$37``<7b z0F#yg0KS@8Hh)wvq!Q~Xmn7quP4d+5xZL}qGAUbX)f-gawc|VWY(z6Zp}gp7=L-A2 z3G1Kdocnv8|NZm*RGH4DKa(o)SKsWNQnc(xH<#45H~l+vL0u|8PL-;}hm9une~X*5 zq1ltRl9}m>rX*9XV{yhjYXu~O@#anWk`BP4$DTY?Ls9jvpEhMJdB^SDg&N&^`-b=p zik(dFZ!}+d!OB}R=VL2`qgDy1M4!ZXJO?Cel7Mx& zv<;v*aAx{@O;(PhixPr}UvT?gfB0Wjtdz!Y`PxB0v!5(ZVK>M`znhIv6aCJ}K_*tA vOzgv%2rmEt0000000000000000MN`E4pLBzL*E#R00000NkvXXu0mjf8GWP@ delta 352 zcmV-m0iXW(0{a4xB!5ClL_t(|obB0BlENSifZ@8cH_82vl)LOhXEKqrwC)%J`hQPK zJD>?dirWSN000d4s2W&R{aX=99VoB=C8=tYfUosi{Q;i%tk|4AY>b!es;Y{JP5kB; z5PR$NKR|H;?91=p+=pq8qutpFjYT54Kj6m4Ht4NsPyHK(Ukr z?8~KX0L_6j(^=n3IgV~h2qON1x9|0r|5e3GY5tafyXa^2lf@;R2ASv&a}a8xKNvZv y#41#YeYg_g1poj5000000000000000()x zh=@jXhH9^9JZeweo!4vSO}Ug!>h-8Y2`V+PgOx-z#CC5;%Z?nsC1sT%Xi;NE`3X}i%wZ%004jiMV^ML>Y&C3eIj_Nj>dcj zvHs?l@T}qwQ6Bn^oh9nu!}HY7mJo6fBAF;Yg$x0000000000000000002E%oDcL^A%+edcObw002ovPDHLk FV1nDGjurp_ delta 311 zcmX@dbctz#O1-3~i(^Q|oVPa<`I;4Y+7h?DQM>cs<4&smj3tbBuAHs&x%Yg!nV^q$ z=_UaNASgF~ct=yUS}NJb#$(?#x%~ZEL7GcfF{~=AD^)*k6C%8R<4z6#4D%gjxskkv z$AmPML$a413C(`=&L&=4_fuv}OI-i0sS9G5t1oDM+}r%WtG7p zZ3*?OJ=K2aS*=w2eQt$8qfo3z=l2alFIhp}Ljr!ES-59@6JW8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1prp~GRx~m8567Q* zy#7t>4?vYCP17{Ze@$2o)wCTkk)(ul0`dy0Nmyb6MbaXbD5;9YE7enS79Q~I3`%({ zudlFb=0BF?{1@%`#Zmm$xCtl3OD9gtuj!LG`R#iS1XqtsPJf@#0L<7~8^ae0ZNV9O ze-QH|T#B~E7=Uw% zhv&nN7bjez$58WhC6J9H*$M?Q^6h=g=aEH2{OP2WOcO|HAxj;X4eRmX0^t5GoWT3Jy< z+}Arb-*6Faf>&L+i?8mXS;l9&R$NTK7c`sVb13GVj(-6=rq7~F1Xl!r3$$2)rV0Du zDp<~@N8t1XpIN(8eCF5#V7A#*V##Vqx`U@5CAxBIRC#NE57@6p6A?d9?|dFt1iT)c zt5EvzH{qYFKuXkeQcBZGO*@G^P17_@(=^Qlsi7X_WTx!MrMx2ZT5!W};`pA$FUBF6 z(|Kj7ynor4njd~J&3Y;#+5B2isNS?qPc0%3{TGzDr)Wj)BK33!e8t0m(Bvx{lI9nB zAa-y?_&K3gf)?R|T9ZY8a5hdj0!se-+?Pv9b!mfzGG{Kr>czO6Fzc!4j;N>U(M=c3 zmHOO&LplGXdKw!5k50*V9-=rpwbqP1BU~7u4v0 U(ftUJasU7T07*qoM6N<$g6AYv{{R30 delta 686 zcmV;f0#W^w2a^Yo@qd`SV&-$3!Kpo9EFH8ni8Lek4np69`Hv+z|3y1~aTLEbZo&!i(uvdZYx*Qke*2yS!PVoE(|>0)05f*h#_)wgTX2Tn zcy1YI3H z;rTEymL^qhWo}5fo^a`%YAA*;yKi*n#R-?_G1NR=c}{QU^6Igyc@?U0EXzGE0(LUd zE3u=ruN13IG=FR@Gd+OX$=&;pA#`>3{=@Vbypvvq-igu4JqAbN-D{|!&NH7`WPR&N z-#nyp1x0jKBXL624xNeGkxwHMA|YK9i;K8+)3;Dqlj|9gn(!4(1E0xedcX~KTE z3YN3!5jZ`;XV&f%pE>pbm~A$dSh5d)1NN)YM8pr&JDYN$s!nJGJRDX+-97ToZgIKF4`i*ZQi zbY591Z+|wX=7%3lv!04bHoq1WsyA)ZQ;Wz${{*+u2nc5{Y%9(>&&U{>s#Nh%AFh* zwq(EllgB^i#oy=`G-6P+Wn}o1ow$6V?A*gL&m|}Rn)AMfHO$}2`uy83OTKnIe_0<> zEfwys_DA=s{=bZGv4?CQXdJTSwbjkHSZprqTH&{F_0dG5--n++n-je}zq;Nn`#3|$ z>Fm`rpP!w3^x)^1$~)V7w8Q0&eO+0l%eg5tck7(WFWV08c+c=7`{K@3rNUJVVS5^M zk8Jx?W!5RG8(n=ssrgIMu`Q0qCsXQYd#yV8FRka`)D=$QQYteIBf7pYF`$Cef0$Ml WOt(F$KX*1r!js+A&t;ucLK6V-$$}67 delta 274 zcmeyt{GEA%3gfeti`++>zx~<% zk6)c^*}wGHQTem`ymzq6xLPb=9~OrPt%+Cdkl97g}(4=RxxJto*2h~3KC|?&MBb@0B}Tn)&Kwi diff --git a/tests_zemu/snapshots/sp-eth-erc721_safe_transfer_from/00001.png b/tests_zemu/snapshots/sp-eth-erc721_safe_transfer_from/00001.png index e642da4fad463a0b6e03f5ccc5b9398599cdc43f..3abb52356a1540fa2e0866eb83dd42b5543b8124 100644 GIT binary patch delta 92 zcmZo+X<^y0fidK>W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1p$*lq$6ommgiD@>dK`=;3!m$!%8;PDD8`o_P`D}6PO}DY!)B5h z$LUnArFaJPQQuu3=R^Y@Nza?>m!?7{j8E;yzJZvYEK@uK7JpW4Q86{&r|W(;zNW#2 z4GE`s29(nuJ{ajocbe1N*r`1LVRK9&OTj|MVwOL*8JyY!+7O_fLF5^^e`%TM#C@i( zkEw*0R*)R~$?<2V*Wbi`2UK}N2qEOZCZUG*oLZk?%`1rN;MtjKJ}I-!${i7rD)7g9 zaN$X1wki@~^M6)wB`}EG!gG%}o%enOg_j*he4d|#m$NQ#OqEzJF=$&vIEhSw zEC_*qgQ2ISXGa$^t?9d-SwW8u@@6J}Ozl8w=s$)LYDWKI*az=~tI#`{1etws6dm4)8tSD@(;O}(6XL2s zDvv~DQ9MJ{T8IvaX~&EJia8-RWlwT>#Ot*Qf3(-tg$!iTC_g{*AC!Rw?}u`eMjKH>xDQd|to zFTp4gLI@#*5D4$|Aq2I4MQCbfnV`zFUC?;;(0`P28>v`!Y6FEsM0fO5M$>*)am0;h z4aPCuci@y7YJNxp%4e7QsuDRX3FF8CYI&TR?ja6rwG@vIb3KV?fVpaA+x3jcHg}p> zHf~ZT#x0B~yo$HPJ;TwqKIqd#v2EOzuq^&Q&<)?AhL&(zF8xeu)X)Xx53iy>_eA!$ vz$)$6Z@txAbe zM=~0S;+y=fa`fW5t})QDRXzj}k{6-w2cu=-bNy5~67|I!@_cV+r%R_ATlNHX&{ z9m=&7kAU9md+6hsXuu=sadZ9BRLX?&ssA`O5Hpfxibuf0tbZ*ErpEhp-p}UObhxk} z;S`U6a{9vuJ^koPb9xy&wFV$;_9P(!;4s86uw6-0IL{7f~Ul-p+Q9TAZ#h{tdyz2t{REg&jw}rg=enA6_gUA%f zf)waC7sH#6~L>HtzR&x#flM3WjW!9*WFLtIPTWBOlRQE)|v zH+eRgcZzW!x-qiz%v%2d(cQm=qf_t&4e(uL=OVcc4S(j-rUoE57kRVl+6+4l0C$_U z@va1~JcGr|F5uoHMYu_3_8-GYHM9RPY=d{gS?HZilFT+ZicarD4fVE7(>+{DCd5^N z)IJiCMe!Y~)v>Yx;B``~SeK9)ABh1BDK-Q5 zmtd9%A%qY@2!wa~5Q192A~ZGACMYtk7j&LIG=HVSMhcdl+CbqD(H%XN(e$5H9C7Da zhjC8#130CInjeyY^4X=nszlC8!Z~t)TJEQ2ct`+SHO0NdoKNBrV9r|EdOhc{&z&lk zotu=2aSMG4FXByc&v3M^5BfAwEE~5aEQ`MnG{bkOp(UJ_OFxquHFQDw!;9$8J(2Y- v2rB#aTQBuyRI#6cnnjopLI@#*kQ4j^)qZ8OdF50`00000NkvXXu0mjfYJ!8Y diff --git a/tests_zemu/snapshots/sp-eth-erc721_safe_transfer_from/00003.png b/tests_zemu/snapshots/sp-eth-erc721_safe_transfer_from/00003.png index b8a47959ecd2dc647031bdb8b25a6873371a4a81..01d4a60a47f9d1dacd1ecb30ad7848297cdb0b7e 100644 GIT binary patch delta 437 zcmV;m0ZRV#1M~xsNq;d`2p}*x1ONa4V7o7`K*w>&=NMzHK=G0;&@DU=KP@T6q}thy zx-w~*G{U5Bmnb5}nAS4wm4`^HRBUCThl0L$-j7QZP3o5o%-V>vgeu0#LS^yWX;J&W zo6U}#GeAbY)H}_IVE8{eZ{jJaahC<}#vhp3ifTzSz&Qg3W`FJM#!JcGZBXNq5L9k8 zmIPnU8Q@O-d1Iu{j6}=5OINa0YkW-QJho^tShWU(q=9BeP%X%D3RjvY z>$CL3=d-S=E)!PHNbl$JaQw_C>_5Y$16*nX0QlG3PD3s9*4J`0R69+&bk{)L-mLMs zUHjgCOZ(D5-G7$4b0=Igb7C4}Ot(~ew>)z$`x3=HZSATqpoE@8_~yRoX3!aHn}6GA+JawUKH4Z3<0I>u*LM+=*G}PA;8BrVo~)c>w?b0000000000 f00000fMtFGLYI9k?F3I(00000NkvXXu0mjf{k72~ delta 437 zcmV;m0ZRV#1M~xsNq@1d5S|8y00000Z1?4r=r|7f9Am5n6ffz3Zty_f^F~jf>4}zmm#$>1)&Psi4rQ4Kj6K&fk1bjZR;>Xcsi2u2R7-N4!j-DY z+ARI>`K*hoW5UWA>HS8M{ zYv0>%X6S|GmS@goU!u6DtzFdtI;^;}ZU1yFa{mMV{Ubm+ zY3)5)J3zu3KT*8;kj>QY25@E@W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1p0c*rZqwcA%qY@Zs()Q(QzE-=id9w!2C)ZgvJT~(o&k~iaHW$FjT+DXO*KDy>}U? z9F>PKgfxp#&jV>$*siZCM+0Yw!~D_{3U_7tY1ZUz*h(_{F@IdjwG^*_bJm}s%Qew} zCh2w4e`u=92IrxFKQ<6Ek~GCDAhBx?6_?g~xbLs_ujw#xAmJ3RfO5{pJ2QRjNwfPH z+jRyYT%1$LR*=Y8O#6L@!LBo)i4M9liDpiYAKFUq_+zHaWhyaCE65txljCQm*T0GD z15gzSA%u{BO@E+<&hltqL7Y|8S6|;Oluki2U;7MeIbsy9swVN}D&&LjExbnMBFu#s z+AK93OqSxCa6-Ras#s`NCAD7X*`B+x*6C^ zl3TiRgZ3FMNH*2nD4noyo}7B~Ij~G*ZKo%qgX) zSuJ05On-~1h?cojf_Og5{U)0PQiR_Ta*oJJab@IR6X&rz;Y{WI--lLqaklV7B$3aca3a%w)?dr-dLF1DglVTY;r>VRUHXuzM}vg4$ii{k{hl(8 zkOhdpC25TiLI@#*klXpFa&#QW`MLK#Gcdo>2BC4nzqFKQx}c6k8VtoR@>%8RMekh( zDtqN23?a=T)OjE+3+we&0p*;PcQSqJO0#OWHRZZf{Rmcb58*+?FM3@UN zv{|Y+xLJx%!U_FysbHa5mDGBjms?~6#2uh#mEJqz+MJGb8zC1R=U4hXtcx%0)6KwU zlHAgf8??`8L9(jmMCpWu8z0uaRahjn35%Gu%eg|R5r5;BS{6Z9-dwAfE(2zOq8>in zm)`zFIeInqel_DZ)EW5xrgN}ywr;ptSk}Bb(WQ{c!&3e&4HDk$p-};{k7*;b^>4#y zYPSB(un*n|XQ6izG&1{OE4q2n--d?gLvvfUy4%yQGs`;LS#uAqk6KrrIFXyuNDWIe zr<9^*rGI?UF)gMdTISLd#Pj*wud+!XMfeRNb3`V^m7aek&SPi7napX1ji|F;2l(^A zX#gsJpq?BGqBzJ*h0kVE2?m8yWIDR(mvQB4U7N@Q@(I3R_!`Mp9wf${quX3U!lc_L z;rX7Ouo2$*+t2}D{F2<+`XPAOCSC{37DHq<4}Xh**J`-K;feO2UI5b6dLx7oLJ0Xw zEc{a*-{cO6L*_dF=wxHZV^nNALnWp<_wUYqnxjh)3TPwK~2pJ19_-V-RAQ!fR@&RmNNHB znri#kaBZckg$!x#%$Xt3g^YZY6mxVC+EO==l zjJzC;Z;D&=sP4!k#m-%l&$g*vPfnv7rHCxXRrGS$)c6=RUNa{ z<22bm!$e#m4AGge`01cwFb?E;1Mt} zYgZ4R8tlUgbuI}>jjhg-5G!~Dgez~}>FHN`qUYJAE7__wz~f?v^2`Iy?TTj}TeKLg zS_6`(pesG7mE?FyXR4-ZGkNiMt&6H-(#jd>^M!1VpSi<+8zBu4QW5|FHadiIrxU3k z?8lgS`~~wwzJIsQM%%pE-TWl&C#n%_*a9 zk5`X?@ByB4mXp47J@ni$IrE(9-I|q5?K^K{R5i7~8EtSUW}!O`Dw#G| sis}Ub000000000000000005Tx1;+K6A{1sR&;S4c07*qoM6N<$g6g8#CIA2c delta 450 zcmV;z0X_cm1M&lqI)B(pKRRI;1VUheo%Eis43TBb(;*=M0002TeR(BHDdo>G#$G`4 zD;Y2hUdUfY=CEAt>OxtWGN#OM(YH&MEXG*Yvh0sx_?d6mZ^NYnTxtRUz(J{yOO!}? zp&rxBW3QMc@_)T4FWSvQ{l&ZrSnhz~XxQh(FX7<{=)w_cFSwb?UMRnvt<|jU9gxI- z7xKxCe{@)We>PLeLj6WToXzcX`Yg!)U^2kic5CGB;(m*!I}hU&#|EHsJI6zR#nX?Y zKVCfp+$VU9v0U_x`=OW8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1p)tKU$7vGNY`?XfS2p$i{m)P zijJf55~eCyHI#8MS{AnJtIE+tui_M6GN5o*s-LC>Z^LGi+JBGXRIa6X2K1=!RUhX> z1DYh~&GAhWT{bxn{rhzTQEQT>cm^a^?J48Zd=JZiYwC&tk#A*LxT=hJLw{^kJ~;pg2{o;yRFts;4!Av=`pQs9)PLrz9Ws{5T-P2rS=WdxyD`8I`XP@-uLF%^!j@xQf7Jpvy<8T zkD+umd;eiL2A_nh&?gBxnPYG(vU^Q6)KMbk_0JMyRKXJTV;vL6d%yZNbiP!aV}Pi_ z{nhft!hhEb5#vyLbo?Ntuc{GYabclS>H!}d>TklTlnCB>oGktrmwaO6IKS^=>GK(d9sX`_)*h>xBAq)|70Q{e&_LUP=oi1rJQpto6D+yOQM7!Nxg5K8q zU~&5(n>@nSr-?td_X{y+z|!fhC(7URcAR%Cw|}`x<|Nfb(N$*zLI@#*kpGW@f6A+( zP58Cb^#ERHKvfkiJ!}pr?mBg|QtDBqH}wI@?x%#RYEF-wTv-ZBUC}9 zv*bRKP*t7Mtwi<4XQe;K((pRLGCj-L<4*{@EVX*8Z++uV=)7hI_=)3NP-v89358N- z0U_gbGo01pay|n!blUFPv$DqO7K#spR0G@JF*`O~rtcJ!J_8#kCo(Z?MM=?WR}ex7 eA%qa}3jP2a%uGIaW6_fU0000F delta 851 zcmV-Z1FZak2Y?5VB!5RqL_t(|ob8)glH?!^M45@ciSK_T-(@}=O)zLngzWN6=lgPC zkXXc)CWXv!X-{g0dp^M`< z#)^)k@)D*hSv8b#Fy<_5*H@LHiC)DizGOh*rc^sk3*Ls!B!9IZ!>L?L@eJru->W{( zi3T)D&YR<#Cc11g9@_Wo2BOv^P4Ns!tlCq-rTHGN`>Xw{8cb|RIK?xdoZfgR(r?{q z?%u}k+5-?aV+vUc62YrxzHc+QYY%8c2kiurW#s&(t@MsRW-@&|N?6AVvc~@5_?^e= ze~JA8sHzDegny79O{|9cVxgL1>4m<^sM_hTrV&9Ui?+E$324Gr_u2$tlu2cK{ z#3|VGOGVGOqpm!NHPEBV=d~bz!BvYiOak(K;i@uX4S&g_^2q@}SQ?&AqR6zD$e}9t zc=7fDc#LUvdQ5AZ2VnBuccd{K!jy)s)P9C^sc{#zj=XA}_pLd3di_0*l$jpD>}2-- zV<=tC-hUX5!6)G=^httF<`~?H>|Rq1b(BbX{j&raRj>r@SjWWi-mkt5jW4-#G9apO zf3(tFksYjLG)CZ)vpAxF7IX!YRWnDN_DRjRMkQmpDPz9CF zlKV(PRdu{uiRz8dN`H=};dO##dX}@tpAfh&wR)>>{mh-vc+Cv(6UVop&?vJd6iQhH zj3Cp^a8}*rYzAuRwB5C5WsTJ>6dwku2DZOrc5Jvz-*J;a0~;qJGBIpLiEFhh2qA$)#Lr8nVyW3hMcJ6VOdes+{3`}jrSwdCg6rqav?P;N%?|;r_N6s@Kjr!E?d`<+z z^~iY>-+~x-MeuI?ft9UFn=}KQXTZR!T~s_Z*}Dlf-V%bCTa8DX<0WbdR1L^~iB!96F1DKvB}^PT2pFyqA7-!Y~Md3<5jOJzr@G z3KjytLI3~&0JeL11v-u+eU33|4XXc=4Z4j7;^!?>vo!3YqZ~}$CXX=b$0bS}*xqq8Z@40tR;NqT{K>-c6|Sln}()YMc^$Ij;bB>Bt+EK2wR7 zzDv(!tIh!ylLckj2aJ_#*~b>03|5^3LYAPJ3eticZ{bX8iaELy z+^=<;t#IX?a57wXmVC+JJ0Es--C_bX?e`wl_bQf-TCYo7GXY~q?v*d&CiZ-?Y#V>d z@3lwP-TXFo{Qc8#_s7wXS8hR$ubVXkZzZd}VvNHDt4Xc44aeU4iErEow^Nf$_P42| zn(S}J99)TA=t`X=GY3nNUH||9000000000000000V3|J*d3F*0000W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1pS5Y^p|d|zz} zgxDd$tr0>9A%qa}IDe`P-S^#pU)SYDFhA)CY2*d_W6Uv{PN+Q@BZ%ai{H-$d#dTey zqhqVQ3Bo1ML){O?n1$u~S7k`hT@?LGcPQMHX{TA8w_zj6tbfOJDA!Uv0(!6Su8(7) z0Y%c|=K7|oDig+2`>}5zrYFl3kAQ_)TO^zs@9DfhTfe5kg#`(xcm$Nw3m^3Kqbtqn zW$e@%fUw!8kf~r{$704mw-}sS1KLnQJDtcga(~liYA0?p9X@U)yln-UV}En}p4;nB zV!r{ZJRyV-LVp~*&0kd#Bs_?-;EZQBbsNvFY>5`z-u@#M2I3#WUDHU~07xP6taZ8K zw0PDC6DQ$7<@dgNd>v5D;^}ZO3p|?0V(mx;T1dUxk|OS(2mM~KQCZXH#@mqxym0d- zL=>!lN@oeAx=ptOuhQ&-IF(w^n4kBfildh#p4(;*@PE>RUOg?wi3wNq5gm?$+%)WD zq2rsKVCsINJ>LLcheGD4Ls=sr@z>mz4bZKC^WZoagKNMndL0Wg>VZ31drOyaBiJJe zADUXLlA@AxxRuP>e+;9lS^E#eHh3kRgOX7eVR&4%D0mF;6ux` z+^Q68LkS^-5JG+_=zq%J)^nFY<3u!6GYKfHPVHX<&v6}B=lI+%b4qpb!gsWqz%rs? zh##OF6nh0aoB|!hyi=9w&_WMIe3**nWxA~6&Ze5WT7Zn|6D%l{f-+&Cbb1*f<5I*i zy>E@P@VxSjr}hOaTF~u0oh$)YwX_eq9~Am2I<+=FRqvgs0mO{?{vy|!dxhmft~mu! z1AMN;_(7~pLCDigL>)BO_8=i1ZRdHYnH~7-b!`?Rgb+dqA>?WP1L>rSz@!Vel>h($ M07*qoM6N<$g4(F9ng9R* delta 888 zcmV-;1Bd*L2agAkB!5;(L_t(|ob8)ka^xTkgxRgViSK_T?y?W5P(;5C$ex*0e@_z( zLVygoA*~TY2qA0lLjHc`diClzQR_3B89=s%ApM#E-hO@B9b=Rm_t zH%~%D!^Wd@mO#4ObUW}WtuDw@sRhmTc|WSS^^nAK+kcDzuPo@*(_);Ma7B#hbR6WQ z;iL+k-wcAK^NIHS0C)j~%uzR0jez9eb6XC;umaA5^IQzB0jubBEU0KCo>c8EUBZoE zk0g9(YOP9|O76q$WcL1J7+uZYe;AIzE8#5kN|H|I7~G2P-sEm*AR9E`o?2|gEO@T5 zr2FyN`F}$P^gcCCStbx8ah(zoPzxWWauArFIuHw}fuuTO}B{Y{{MiG_qG$ z*#Ll2)ShaemJ*Y4S2AB*R^P^5bpVMZlULpiEq~+zG4&>P7GVVQ#IgC)D0ti`j3X{R zGYgqpm4a<3A%qY@$S(!`Px)?LcL_93L_;-;fWqq1{x$F%*Ku`?&+RgoR2MJ(M5_rb zBN~SI0m?zKSD?cw(1)1!Rb@J~5uu0=OWC|iw{_grQcFh*kWu{w3ks#6Oc*GgUPZ`z zDRJ_c-o{mUUU|k-`+^-Us5@6DOTbkv?SqbkLO(@NYvW7(K8OZD%$V;la_zZS*e>Ll zQxFZn=Sqwp#Lg6iT+Kw(L33>n3gX#Lu7{e{f!AL5W+6fdA%qY@p5{O3X^Ox|%SW^T O0000I_wl42E-hH+K~-$viG&``0Ywesk6_pO>Hf4@WPM=)cFjZPOZ8##f9tu1vkhrf^?# z_QPMX|4#)Ly*4bF6!&fhQ^{nXZ--5Se7`jtvXv)^?z*gUvgcsf5^)ApaO0WyTC3)Y UP>~7ufD)Vxp00i_>zopr0E*^>VgLXD delta 272 zcmey({F`~gm-;m^r>(YS8sFH;t}=1KRIXR7miI2ryb_YE7QZL%^}1JPna{hveBUY4 zH^1`GKM6hN2bY8y4(xwcCT+EB{}(g;R-NO!?>(K=vqrgReYwu}#q)Ek=3c0|n0+TF zp>og9`}bxVJzG)y-29=>`Z=k(r`-CncRR@6t8RqdbC^MB1Q zsm&~`ya#ToMw|DUyq&Rl`Te$6)d6Q`XvY4_tl$=Te6jjK*tD%04z>)lcU`*8@WeXR zIA;IrcuTK5+cv*Tr)7g1@+O_Eo8h+VWSzmW2Yzdu%4ey}G`!LEg^2+b-2TI~`hRmp UCl8|xP=b@e)78&qol`;+0EkW8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1pwk&)4p`+0A%u|snn(@xWSnLl!r~LRHiamrrf`&c6=+9@5K<7Symkx1mtkH1Fbk)G zL24>^8(0`>H)iO3iL{FpUT_n>MvW))rb^`Q8_m^FI=7H0c7OQncEIgTAokvVi@L}} zUikkFZ>75ayaF*_#SSC2f_6dN4!8~Vk%)$u<1I~r^!9*P9-uBAcgfTe)X(m;r4%!j z!X}vR!d|*03UF@qOm)D_)I-=|Q?oA$#G32?v2?cVP-xQcW|x!?ZYSD)x(yaKM&aIQ z6hTlL?SE9BGJn$pxJhRAAHzsBv;Q#cgE!$S^d?D?*#}$E>7D&H6cH@VC!VQM;S*6+ z(+~n9eRF0lP@dTiB3PyhqPPQlRS;EmiLRNpf_vqW--MUkeLS1D5p4<|zoL9RoMSNq z7jZ|uDuR#V+6?gIU+{_d+k0htg3PD1xzxDFzzm4X41awq`21GCyT$UlpLf9Mzwto9 z64Y|zws2~-z~*Ll-PunQ-`VlMiOCEkGe8T6`bjES#%ky!1zl4-35o>;Vjq@m!h{e) z2q8p}Y7*XCT+A@*iimJeukhqX2K#CW!+A03Jvv{XzubC0pK^34Uh>%F)fsO6=O*?b=W&ZAVCH0;UK)Y01`q7A%qa(@(a(NL%&fedCvd< N002ovPDHLkV1hPGNJ#(y delta 679 zcmV;Y0$BZw2aE@h@qfW<7T&iR?Ailbm!O$J>73vR;KsPSapREgYuqq!PN=N1yh4u7BB4!FGu#NOL)Q5TuW z3;)02tyI^aS0LuA*kPnr&@PDE0k@$(64CH-yrn6S-X8GE1JtGCE}2?_`q`bflwzh* z*aXvE*h`m00nV+SsScQ#dI&pgYW78eSd$$fmd=(P3QhXm?2_`q?L^y8x52{3DBK&3 zA_z*O{g291W`BABH_6QYV;HGs_8*3Q@FrY^-Xuvf`(P_Ny|dqjB7&v)#4|N2d?Ko9 z8bV;CZ_ca*$}`(R1j|%G6n9{+3Zkkm(KXXnaIZY_oA8pmk7x5XqD|rBSCo&3b1Y`y zBJQYHMetEvn*pBu3qJ9Fd#_ASkolB0mm2pNm;rH_p?_}$pWo_tw^&~H^9~sOHy$Wh zf?96e7EY}e*xbynJNs$kJ3Ib2F`0p6258|>KS>44SPh+|plgaJL9w7f?8CB6m=Hn; zA%qB0O~QMNiy3BJanVO^-9y>{5*HE$Nbw?8JH=mj7Vk6-)*VuPM_VlDE~C{2$wkb( zP@Lgslz--vAX7C}(tCwe^vZy71=$zX!3?$?Aud@=ta8xQOv7;rZ~stov*vZyJ3ajrgeTfKm2l? z&+k*u*mvm5m8^3Ld*>MDCaBGPlYiO6^yd8@vmL^lFU)20T*f<1X)gmRIAFAYmBds* Ur&6D@KnYF;Pgg&ebxsLQ0AUe`TY636FK>diq{XdwTSBRCwrgPwn(2=fyW! z);;6tDFUW!1+s$5bv?Jpal$ zSo`k32ceT+ypMXdP4k3TRz12zLxQ7%_c?t?dkR}*&;&JBg56rYL;(X zn0{Z_BtEe!%QSsL+_@QM29tfhZO>dX>rK9!^qtPg7kmdKI;Vst0OYQOMgRZ+ diff --git a/tests_zemu/snapshots/sp-eth-transfer/00001.png b/tests_zemu/snapshots/sp-eth-transfer/00001.png index e642da4fad463a0b6e03f5ccc5b9398599cdc43f..3abb52356a1540fa2e0866eb83dd42b5543b8124 100644 GIT binary patch delta 92 zcmZo+X<^y0fidK>W8b28Z-f6G+;oLEzopr0HT>Cng9R* delta 92 zcmZo+X<^y0fiWb`(JavXv*!PV$X9Hul7GzPl%M+d)|yBE6n;x^+OL}XFaK&tFuVB+ km6=vIy1pWBQTa`dM6J_kDY%0pN}vLck@V74s$u76dI7DkB6_>uz(ccuDi+Td;2Oj7e0 zPUTvPXTTWsBlLMrG~kouyy;&wk+Q{k=--bGM2#d(@eD|;+J8&Mt@$3V`@8v79VRv; zoZ=Z!&iHs|q+hzzT)mB5wFe*^jwxg*NSs(y`|CD?tM-64CFo=jSx#PGw4LnueJ0E2 zql9&=AbXr2j-PqF{z;s7Kvg7!5JG-6u^NiYDe{oFNH@L)Im(?{Ve4}t;>WruSQ3`} zOiBd&8skUs=W_t3|yQ`G@2JqSR<3n0?ClOnh)~Olsb<7N zrY!WfrIlJ;k`O+vm8WtBw)9O`;E9B~AxmESo94BGaG~7gIF0TeoiSOTO5qSvf&Vl(QhhaG7 zlCs|e!n=Ns^85XW(|Wikj6t#kN)#(ZbaZro-*fvu40lzXk}wb+{qN{BwfgI&)NI01 z6El^yPX1Ins;EwIw@y^Z*EwM=A%qY@2qBmAABpcC%Y-V4(EtDd07*qoM6N<$ Ef>M8*IRF3v delta 826 zcmV-A1I7IJ2KNS#N`D|^A-1e)jSxZzA%u|I`BP=+^?Hrx-n&&neI+Y|l@s>onsYVT zP~SehU5x606)-uvw6JSq=iamn&f=D}RE@Vow18Cn=FF8L)B3OA+NX;7(hRfCBQ z38#1llruiw$@EKinya_5tM&kd!<<5vf<*GFm9N_juG$0I6rhtNvW&dGXgksI$4r*b zM+xg#LH0O596$4T{gXH!fGST2A%y&DVl@<(Q{*9Uk#2kqa+Eu*!rtdX#EvCxS`wE0 zOi)|2C9RGx|5fG5920g+56TWRAh5$nXYgsIQ_}g$ec1>hZ*y<(ThnuGJ+VYK-;D z5=Ibh(wByCYq+=mE30zJYEiER`F9XY-Whipuor19p_Qglf5uqeg8tNKL18!QS}_WD zQ%SW3Du3H2_g>^bkp2oL$qc~a%8B}jwAx)~WVsaj9Ti%(%JmMqy*&U45o%d6)reTg zkcHN^v{GwG62hmo@>I@%oCLTWX-fVQidf6_b(_BZ#v1@tS+pd;+`u66pw)9O`;Ddg&8nN{`I94Btnblk*XF0TeoiErQO5qSvP&W`ydhi*9K zlCs|e!n=Ns^85Yp(|WkajX`n%N)#(ZbaZro-*Wq&hP$dxi5m!y{&#emTK)A>YBpi1 zi8IPpCx0p(O;jVeS;s5n>l`}S^xk5 diff --git a/tests_zemu/snapshots/sp-eth-transfer/00003.png b/tests_zemu/snapshots/sp-eth-transfer/00003.png index 65f9877e39265a5847b82d71d2dfac34072c3df7..24b2f0b49663992b07ad4c5e7dbc69eee4737a78 100644 GIT binary patch delta 374 zcmV-+0g3+W1M35jE`M^vAPhiJ+UZW%|B}3yessbx5(wEAm?rmpxeaKDcm}5g0000i z_Z1cBIF9n1bM6&rexwTw3txy|mn_9fvqeSSn7T|I;im79C`Hb>Ze`soo2Z-A%yOZJ zg06etPe>H4v`-Ao-iY&rYQ_)hG~<+yjQgn1I#$|e?OqvAK%@G# zj~00Hm$1zk;OUJ<>oXnT$)inPj)v<}&bfD$X7pmO)*8=rK;Zig@p{YCRr*50*}*ex zu>>{uOb_Q?z4Lmt`*pNo^UONQW9XW1HGEI$dE;mtF-4W(+m&T|z#zTcld1tN6y$J$ UN2J6>wEzGB07*qoM6N<$f?WT;+5i9m delta 374 zcmV-+0g3+W1M35jE`M&sAPhiJT6HJve@WR(KdM2<2IC}#(3yL_(grMIUKx@S00026 z+*eef<2cH7&be2hc}o`<7QPU_E?J6|W{ZltF?E?b!cE^HQHq>%-O9RGHc>aJndL$c z1zq>PpO7e8X`dLFy%FaL)r=!TiTL)k=>2~j!oJOX6*r~O3rKUMuZ)?OqvAK%@G# zTMIn-OW0-%@bpHb^_dRv(ACCl zZgGnlY(Db(zPM)sirLkdbi{2FQ1ay9o)XPMH0+T4ZNxs6 zVJEysilYc~r#5Vn^p43t(Ge#k+HnS-`p7FMpvFBfuvQmM6L_LoYkBCqN(W ze|ivr QWdHyG07*qoM6N<$g5@`WIRF3v delta 268 zcmV+n0rUR21G)o{Bp`uFL_t(|obB1su7e;9fML#Z-h}smB;I8g%Sc0OWzLaAav;eV zA}pGMUhkv-63OQ@pZS}&Pgl6rtvco3x9(Um1s##rD1T;IW^3OPR<>qNC>|OEhTx1q-ZuiSyD8&fy$%EwsU6!Gj9oZA0 z5BEPkqdiZ)oFrX@2l{i^&$xaB_?FO_XzQQc43=QD3#U*XoU_EUbo^??~%&;b$l_c<{*Zb3D<{2Ovh zxr*EdWpjfC>aiEK6L4W0CF1e&mn+@=$(oOC&GIajRqcu4m^Zb#o;I?%$t^~(+2#3T zvE~FMIn=id#DB6AkmAh2ngZ=Y3yO6Pujbo^_iY;I(`VBL_t(|obB0BZo?oDMNwLHC+vSo?4=)3DT3z-i9L7}?)kDD z3UGZ9qlwEsVqPEZk6+b(ow;kUJUC83RTo6g zSzgyWUHN*mlrokdr=cy@wKYaEh9_fgV@M9O{(WtAty0QS(0}cn?$`QA+wG*ru9oQ@ zZ|6+bJXSjygNH?1(BplyU!u03vd?GUzOlliVI8OZeCvi4ThJRK?C)!0aNL4ga`|`U zmU0!j4a(+>1?sUE^%HPm8#Q8k`OB4F{>Yl!GV}4svsAtlGcmm9No}sDjcjglixC`l zdHq=IIRQxy^?xk`vF!w;ICHS4K)cX}Vx7ag`LyAEn#Otc+4UCv5yO!vsfaGuCch}y zH|0NABO!`^WB$ud%-O|eE@ZX02)6=GmO1~(Vo@ewG7a}?f<8i4)y5%wvk)slem<0p w^FSt?yI;reng9R*0000000000;8XnqQ@t$#Ev@g}01E&B07*qoM6N<$f{!-4NB{r; diff --git a/tests_zemu/snapshots/sp-mainmenu/00003.png b/tests_zemu/snapshots/sp-mainmenu/00003.png index e10e0049c4e39446eb67baea703f77a107925640..8472e5d9cda5ebb93b4d7b4e7b9096cc96903486 100644 GIT binary patch delta 266 zcmV+l0rmd61Goc_Bp`oDL_t(|obB1su7e;9fML#Z-h}smB;I8g%Sc0Ob(ACCl zZgGnlY(Db(zPM)sirLkdbi{2FQ1ay9o)XPMH0+T4ZNxs6 zVJEysilYc~r#5Vn^p43t(Ge#k+HnS-`p7FMpvFBfuvQmM6L_LoYkBCqN(W ze|ivr QWdHyG07*qoM6N<$g5@`WIRF3v delta 268 zcmV+n0rUR21G)o{Bp`uFL_t(|obB1su7e;9fML#Z-h}smB;I8g%Sc0OWzLaAav;eV zA}pGMUhkv-63OQ@pZS}&Pgl6rtvco3x9(Um1s##rD1T;IW^3OPR<>qNC>|OEhTx1q-ZuiSyD8&fy$%EwsU6!Gj9oZA0 z5BEPkqdiZ)oFrX@2l{i^&$xaB_?csqjFe@+`2Q@t(MTA$hYHRjdC*@f*L{tHe@2kc+nxps;B7RJr{80#jz qeZ1KEao=p`py-84a4#`1Jn)N8Pv7$HPEcktNYvBS&t;ucLK6V1H;kSD delta 290 zcmV+-0p0$@0=)u|B!2`+L_t(|obB05a)U4s1wfL@O?3Yw=`LANQ4#S=sMvZY-75?% z#!u4NplJdC0000000181ZFB*Sa5AiX&fD<>1do6tc_AJ*&8>Cum zw@@~3i}F6YfD^UWt{2V9m+5=T>*LMaa-^?-y=i-pW*2v6?te}C0BqW8GMh3xPm|t) zE(_1S=?5Tu!Oq&;KdyFpTgdl1DI=uHd)p0J`cJbFwe+9N7>uL~jpTQDq}Pu3;NRr6 zOZ>vYtA%TqLL@#3cVWe5cW3LFdwH6Nx1huo@Q3Cdg0@Kz=;i~EFZ6ZvU3Y+A$+~xU oXS(AbUIG9B02=@R0091pPnsLSa)uoAQvd(}07*qoM6N<$f?`UCvH$=8 diff --git a/tests_zemu/snapshots/sp-mainmenu/00010.png b/tests_zemu/snapshots/sp-mainmenu/00010.png index 0e0c3d04c888eecc57c945ffac25c9f0163ea8be..e1aee92b8b99cdd839f02e0e1b9799bbb0078b70 100644 GIT binary patch delta 297 zcmdnXbcAVwNcsqjFe@+`2Q@t(MTA$hYHRjdC*@f*L{tHe@2kc+nxps;B7RJr{80#jz qeZ1KEao=p`py-84a4#`1Jn)N8Pv7$HPEcktNYvBS&t;ucLK6V1H;kSD delta 290 zcmV+-0p0$@0=)u|B!2`+L_t(|obB05a)U4s1wfL@O?3Yw=`LANQ4#S=sMvZY-75?% z#!u4NplJdC0000000181ZFB*Sa5AiX&fD<>1do6tc_AJ*&8>Cum zw@@~3i}F6YfD^UWt{2V9m+5=T>*LMaa-^?-y=i-pW*2v6?te}C0BqW8GMh3xPm|t) zE(_1S=?5Tu!Oq&;KdyFpTgdl1DI=uHd)p0J`cJbFwe+9N7>uL~jpTQDq}Pu3;NRr6 zOZ>vYtA%TqLL@#3cVWe5cW3LFdwH6Nx1huo@Q3Cdg0@Kz=;i~EFZ6ZvU3Y+A$+~xU oXS(AbUIG9B02=@R0091pPnsLSa)uoAQvd(}07*qoM6N<$f?`UCvH$=8 diff --git a/tests_zemu/snapshots/sp-mainmenu/00011.png b/tests_zemu/snapshots/sp-mainmenu/00011.png index e10e0049c4e39446eb67baea703f77a107925640..8472e5d9cda5ebb93b4d7b4e7b9096cc96903486 100644 GIT binary patch delta 266 zcmV+l0rmd61Goc_Bp`oDL_t(|obB1su7e;9fML#Z-h}smB;I8g%Sc0Ob(ACCl zZgGnlY(Db(zPM)sirLkdbi{2FQ1ay9o)XPMH0+T4ZNxs6 zVJEysilYc~r#5Vn^p43t(Ge#k+HnS-`p7FMpvFBfuvQmM6L_LoYkBCqN(W ze|ivr QWdHyG07*qoM6N<$g5@`WIRF3v delta 268 zcmV+n0rUR21G)o{Bp`uFL_t(|obB1su7e;9fML#Z-h}smB;I8g%Sc0OWzLaAav;eV zA}pGMUhkv-63OQ@pZS}&Pgl6rtvco3x9(Um1s##rD1T;IW^3OPR<>qNC>|OEhTx1q-ZuiSyD8&fy$%EwsU6!Gj9oZA0 z5BEPkqdiZ)oFrX@2l{i^&$xaB_?UHT9yLf)_;U}o}v50yw+ zjhEmsr2qf`0002+PR{c@&(r@eqyES7n>~SYi}Gt^8saZ|0xIHuh}Li%$MyU;4pPVe zB#UGVAOa=UKtv-xB%R!KL_w3b{K1JC;FQGdiUoj5Vl$(3_$p4hcIVLNMDfT(er8rpTV|K3E0CJp@~+LI3r$N!3i zv!P9mdoZ`feR^@I64!C^!5~D(a3Olq(V|@Vgk~@pFgGOOdqB57c1vH30iKEVjaWwu z5;-_@13W_-wsxCaaPhW3%8zGh(vMCf$G2K!$qNY?$JbcW?1l84 zgf*pTsyuHfK55>gBF89x`r}1@^734MaV~`SJjHIDsl>aer6m1bJ)X{-w-B)?J|TE5 zpu>&YIe)v^XcLYu#GmXu^^Xk(uB(Y3mxH{n9p=U%=hery1+14oPs8;kPoal{0U;5n9CK6^thx!wuGXs#VPvzYlmbTl_+% zMtt!vy$)(?KL7v#;3>!_Endu+)NAl$d-i0Dw_%`DxdJ%e2~AnK9rOQ^d^8Cc&Db3qJ9W)~MU53c+0O8@`> aw%{MmKVS9{sMf#$0000XDBMQx`$$^Ms=z4Rj;#{oppM0m|TADv06 zf~cUxR|)_C00000@8mqs^E~bUQp$fE-_Z(`YRZ3OQx`wc3Um?2LtG8Vaa`|@;~-`1 zZ=wiZ0mPtWH4xK?FG(Y{jA&?5m%rIhiWNYNWt{tSEwmQzjeqD);$uL0AgCSJwhbkl!s+eW z@W9z?ygexJ$6h1eE#^wsCdAFO%OAb%=+(Ws2fe&k)y0$WVs$we)LKorF$wOz*!HuV_-yE>TzBC650U zac4t^Gw#OR7We7JFqQZmCm#%4Oo($ala3bc!WDXg#ekWRfbRj*^KshxVhpe-HYc%- z79?_T=m1zmDr>Fwp)4;2ah!OBS0aSP)(XUZ_tw3uzkdVs-srxEdh8M8WrJc}5j&0Y z<^hnU?40{Kt-o2Z$T0vZywGbI7#U;mDBQe*kMip&nhfWrmE&7$vdF%;R>pr?Mo;%; zDHo(1kt`L(H^WO*|8 zCVZ%#uz!0RMPYAW?8(lv|FJ<~d^Pdo5|G!O!|*s{y!tp;0sF1bb8vInQ!x$sTz95h z9=jlKazjs-%geR@VaCD5^5?FgFlo{iGd&n1e3)DJqn-ua7_RJ b0OI)tY13l%-#3lA00000NkvXXu0mjfyaa9M diff --git a/tests_zemu/snapshots/sp-show_address_reject/00001.png b/tests_zemu/snapshots/sp-show_address_reject/00001.png index bad0ee7fc94cd47748ad2bbdc1726ec09cf15a9d..58718daefda473433b780579f341a61ab21b2a56 100644 GIT binary patch delta 744 zcmVUHT9yLf)_;U}o}v50yw+ zjhEmsr2qf`0002+PR{c@&(r@eqyES7n>~SYi}Gt^8saZ|0xIHuh}Li%$MyU;4pPVe zB#UGVAOa=UKtv-xB%R!KL_w3b{K1JC;FQGdiUoj5Vl$(3_$p4hcIVLNMDfT(er8rpTV|K3E0CJp@~+LI3r$N!3i zv!P9mdoZ`feR^@I64!C^!5~D(a3Olq(V|@Vgk~@pFgGOOdqB57c1vH30iKEVjaWwu z5;-_@13W_-wsxCaaPhW3%8zGh(vMCf$G2K!$qNY?$JbcW?1l84 zgf*pTsyuHfK55>gBF89x`r}1@^734MaV~`SJjHIDsl>aer6m1bJ)X{-w-B)?J|TE5 zpu>&YIe)v^XcLYu#GmXu^^Xk(uB(Y3mxH{n9p=U%=hery1+14oPs8;kPoal{0U;5n9CK6^thx!wuGXs#VPvzYlmbTl_+% zMtt!vy$)(?KL7v#;3>!_Endu+)NAl$d-i0Dw_%`DxdJ%e2~AnK9rOQ^d^8Cc&Db3qJ9W)~MU53c+0O8@`> aw%{MmKVS9{sMf#$0000XDBMQx`$$^Ms=z4Rj;#{oppM0m|TADv06 zf~cUxR|)_C00000@8mqs^E~bUQp$fE-_Z(`YRZ3OQx`wc3Um?2LtG8Vaa`|@;~-`1 zZ=wiZ0mPtWH4xK?FG(Y{jA&?5m%rIhiWNYNWt{tSEwmQzjeqD);$uL0AgCSJwhbkl!s+eW z@W9z?ygexJ$6h1eE#^wsCdAFO%OAb%=+(Ws2fe&k)y0$WVs$we)LKorF$wOz*!HuV_-yE>TzBC650U zac4t^Gw#OR7We7JFqQZmCm#%4Oo($ala3bc!WDXg#ekWRfbRj*^KshxVhpe-HYc%- z79?_T=m1zmDr>Fwp)4;2ah!OBS0aSP)(XUZ_tw3uzkdVs-srxEdh8M8WrJc}5j&0Y z<^hnU?40{Kt-o2Z$T0vZywGbI7#U;mDBQe*kMip&nhfWrmE&7$vdF%;R>pr?Mo;%; zDHo(1kt`L(H^WO*|8 zCVZ%#uz!0RMPYAW?8(lv|FJ<~d^Pdo5|G!O!|*s{y!tp;0sF1bb8vInQ!x$sTz95h z9=jlKazjs-%geR@VaCD5^5?FgFlo{iGd&n1e3)DJqn-ua7_RJ b0OI)tY13l%-#3lA00000NkvXXu0mjfyaa9M diff --git a/tests_zemu/snapshots/sp-show_address_reject/00003.png b/tests_zemu/snapshots/sp-show_address_reject/00003.png index d9b5efc53dc2964d9fdd510ef481e9361f03daf0..de8a2912c302b8e8b47ef0c28919d7b92c0355d7 100644 GIT binary patch delta 314 zcmcb`bd_m>O1+Gyi(^Q|oVT~4`3@-vv_8DJWAeLt&&}fU9#Sa_6l*6~e)&I7>lVxN z6HC{oF~Gs4g7WhH-}C(5UzOdlI68IbCGjLind5#n~8dhnT(OsOXCcKV-b*e;X^zmks-WGgXMrFs`2?@(Cp7>FVdQ I&MBb@0QKaF`~Uy| delta 319 zcmcc0bc<<%O1+||i(^Q|oVT|;`3@NfxLjl_oP6iMN3FQnG@Zwamzl~f|F7-nobd9H zv(Om^IB0qJ?p@vcyEE=>wk~kreyV7x{}HAe+jRG?I5n65GpE)OrVVjyyRMpVzW#>q z&J{n4uB+xp1t)|&6pZp@!yT;k)t P2_)v}>gTe~DWM4f1(lHv diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00001.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00001.png index ba14ce7a76dc79cbb125c8a4bea3b10c072799ef..914e0a285be181a49776f2969e7d8b26451c3cfb 100644 GIT binary patch delta 769 zcmV+c1OEJ&2AKwsB!A#ZL_t(|ob8%jlB^&Mg}GCAC+>eq?qwdVvC`xp5U~1uPu+?! zCM4>SQUCw|0002^2F~+5&y)Xd7-=8=3jVKlAj)wZ4M$z+X*+ffyCi^4WHDYy+|I98?VXY%IT+)mH3u#YXMfPZVcRWmUj0&Qe4ZPgZ< zq@V+1*`fmOiP;>5ehaJEA^|CyL(C7{AzNz_P!;~&g@TQUcP-6AwOzbJ000000D!Ni zdV=hKH!h!Y5T)74;p`&DT~KXcIMni^CrYtb0xp?|hlWd-MVa{G$er0M0U|Ud_wQ;W z-@C%o7PixZZhvXMjon(j%L^(X#alYh&2|+~x{Kgl)D^JF;{nY<^_y?hj;i*$Up*(_ zg!g;q-9pqLBl^=2LXGH8202&>y3k6TAR`Bl!o&No;V|u+I33IdgQ7?U_7kCILG+40 z-+MJ9(FBNR3d;0BZKt`n((v7Pf_UTB zB<}th5V>kqjEi(?z7~@%QBFZy4fn*@TVl1968N&?T~o#YH39KBHu!3U^10{WtnoRb zZ2BG$9Dimc?=Y9A8_$unvDgK{`wulV2m%HE#AFeyjKAL0001pMAcANWz-Z? zTgx2#=E*%VUeP0(ZZV%P`K3Mh-QQIiUB#5|a%ISYuBOz}ei=1>MO|uWN;M452<-)} zNH0DQ&N$sM_gtxJ?vWovXWtw)Jh8{9htw|aS&jL>V4P(wwPu^J<~oAPf+JBrBt zhNer?Y&*{tk?i$8{z1mhnK*vPNnMw!!Obceq?qwdjhDzs;1Q6)z^F4Jd z#+Z<(M@j(z00000;2XH_`@V1ayJMt(_($-6w*yhG>*_e_m7cz1*KkS#=tNfI#X_l8 z1G7M@M{cC1uIt*Bs-MN@v$*~!T5uU^u%v}LK;2HyvayeCsDFUhbYn9y9s+A*Fl}rL zO;XT-xg1debz*i$Vcfzljz~a??hwlZPsrAu1hB%dT`1UyWY@ARuS&WIVjy##O5}-m;Qh&3J za_1rv8PQ*c5^6+$G04GA(1mu=2r_c;C^EeN`i`_di_^hUGbn~y;6D^bEEGdW z3O-f)pXn_JmZGjB^EdiGQl;jYiujo|?%0f*4YEy&Xn#tc^zY!>O?5q}6dgI}f%RN&k3R-48M0GFNxTH*5-e1@2Udu=#0qV(uN_|k?>1(eveDzKcZ`_u| zJ)Zu^C3|9Aq*Ke~m~@qL3fgL3zT}>HsqN^$ObX-P_U(t{nnoO7AKy9Zt@%~5hF8#=C##JP0R;cNFUs;1- zKwTsW0RR910Kl9tdy^@p^E$@3+R#!H`;k)010c3cD4AB}j`a#CW@X{87^Ap8QcA@w zQASjC2;>@aRbqF`Me}WDDW`t^7~^prUxat3C|&gSTtgm=dVf5k-PQb41i%+sRF_GKM_pvIusH0%dvY%zFkL4OM0G|4&ud7^S|`e%E7tte?Nk5Oa(}^13-@4D3o=-nt?FKDFyZ|u{t@8`W&+UjsD(_c4t&$f1g-Z6_l5h# za)tvi;eAmcsI#fiFe>lDXtWN-0`L*xznGx62D z`HRwyUhB>24EKmfHMTZna2iTmp|cc($Ju0maPx1MPUE{00000 k00000000000Qe950=;gef1&0Ne*gdg07*qoM6N<$f>Z10lmGw# delta 497 zcmVO7AKy9Zt@%~5hF8y$taTST06*lR6Us;1- z0FAN<0RR910Kl9tdy^@p<2uH;+t5}M_amiL20(0CP_nGb9qSoTWo6~B7^65pQcBe= zQASji1xgL2DzUrer1>_pRMI|wj4@xwKf5Oa06F)o)%?i!a*ftQ)e{@+t}Fb^ zECB!j0C*U4wV<{h5c=gErA1VGU0&>BCM>q>qCLL1+vky%qfxnaYWmcoSW_Aq$(r!g zNy4WXSF$x^5sYd<26MAl-Rlh|ydK5hBD}y#07f3QlIhifFIrik_y56l z;c>B&=>RNvUla&xHdPvC+o&p8tu_c z{CdUxOSi{TIr{YHU8b^sHFOhq$@<3z;4TmVX9$2Zj}5?GUc$H8h6Z(K+56C16b1kQ n000000000000000fd9ZR*9EE;Zwx5Z00000NkvXXu0mjfICtW8 diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00005.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00005.png index 08270ed09b3be6f279e5ad419c79df55a0569216..9a37b226f4ade2e55e8f739bfc35838b09b0a824 100644 GIT binary patch delta 761 zcmVE#QPtKyX+6AOqwquV07*K{OG8J zgb)FVwiEyW00000()mfSQEP3-+qNZGq;@kc4)98|w08sz#!aZTUf8PNs|@e3!9nj? z^;jKDwN|yRV@O_Ct0#<}yb&O2J~y}3?xS6^y(^b0000_=G3HE{9(7N$5MW@)_P{l>~&9S=t8wlns3aCw-IA^ zjl7BImG&!T)PJ@zF}dZb1l5+RKax9A_h?eUvf^lFMN_eHJhAjj8To6e@{25&eEl-s zzKr9YYL}KqTB|afib$H>rWs4&snpN>=zdDyRqV$#mPVZl05kk0taW+8`+&Vc@}tdyflenQ2B#vsxASc% zU76X#7S%PpdLMl{l*=eq8oi;G{K%2hBjmNOoncC}?*%D?dw-D?Ytq< z$Pchs3%eFs*QoN+>$TI-R5FfrcRT}i6UN%P*1PpzM_ZY~?iiZPP)dTMc36H1(EvpH zqK!>8pE}jdKzo9=TCGU)q(FWu7XSbN007*bwQ_sZ9IpJIFerEUr#$=0tcbtBvtzao zQny7?xM+JQY^h4I^NaGgh)G60wK9?2bnGQOZ3_BFslc751>g(6Rb7C5)zh6u{L`av rU@qk1MffO@FIE8n0000003H4SY*6Eo(htbx00000NkvXXu0mjfX_s@S delta 769 zcmV+c1OEJx2AKwsB!A#ZL_t(|ob8-ja>XDBhSN@WlKn5qz4Re-914g8uSx&!;Y<<{ zyrGfU9tQvb00000)A^cUBc+tD&-0vMk=mVUF~IjUOIJhC&e(*M(!x^xtTKGToP&;8 z^;&hNl#-g)FeIO=*(Z3M1F2)ZBrVLR@(VRimR?BiMJ> zN_`{7MvWXq^nXeIl`?8snV8)8B!X&7)$fTQsXH|(P_klZW=TyQZ`7n@K+4G9k}5k% z=Jn{8{cXz_wNvfVR8RXb`h+63nEM>W0(mOwZr@M-cIW_R_@6MT%FfAw zKDj%e1hV+`c(OZlsT%H1ViNvAhPe#$DR#>YuqU?bseh`5!aiI2@r-n*^2&_#vT4Lq zo%vNRT6|gSAG>ydZuDiXFK70c%sAfP2RrkRW}ywKG&1^ND6)B7XG0S?GF5ulq^iTO zm3LngWqFRmr~fWYes8u)VC*u&J`~94+3duUoOauBg(711SmcX6Q3G2tm1b-#l5J5I z*twOJxqoEETTzRm+E6#{_HC)2hJboe>Tjn-kCm`agW%avbyYCLB;mk733(oim9T1& zwU;ViS_{MUJe-?E97#UhnOHd+Yd8FK^fivuPhEBo$pP5tG)}J#%f|?IfTu08Z?YM{ z&ef|tPFp#br+89eQcSn!f)4(&@-Jk-QJsP?_Id#T06dHbEnRpETFjcils6(aRDkZP zE@@~L+D6gG@o)QFnZ3jH%xavk7AdeH% zNNOpnT2(ltto>O0?`pz$4y^(J000000Cau<6YBdUrzi%{00000NkvXXu0mjfduVm5 diff --git a/tests_zemu/snapshots/sp-sign-add_delegator/00001.png b/tests_zemu/snapshots/sp-sign-add_delegator/00001.png index ba14ce7a76dc79cbb125c8a4bea3b10c072799ef..914e0a285be181a49776f2969e7d8b26451c3cfb 100644 GIT binary patch delta 769 zcmV+c1OEJ&2AKwsB!A#ZL_t(|ob8%jlB^&Mg}GCAC+>eq?qwdVvC`xp5U~1uPu+?! zCM4>SQUCw|0002^2F~+5&y)Xd7-=8=3jVKlAj)wZ4M$z+X*+ffyCi^4WHDYy+|I98?VXY%IT+)mH3u#YXMfPZVcRWmUj0&Qe4ZPgZ< zq@V+1*`fmOiP;>5ehaJEA^|CyL(C7{AzNz_P!;~&g@TQUcP-6AwOzbJ000000D!Ni zdV=hKH!h!Y5T)74;p`&DT~KXcIMni^CrYtb0xp?|hlWd-MVa{G$er0M0U|Ud_wQ;W z-@C%o7PixZZhvXMjon(j%L^(X#alYh&2|+~x{Kgl)D^JF;{nY<^_y?hj;i*$Up*(_ zg!g;q-9pqLBl^=2LXGH8202&>y3k6TAR`Bl!o&No;V|u+I33IdgQ7?U_7kCILG+40 z-+MJ9(FBNR3d;0BZKt`n((v7Pf_UTB zB<}th5V>kqjEi(?z7~@%QBFZy4fn*@TVl1968N&?T~o#YH39KBHu!3U^10{WtnoRb zZ2BG$9Dimc?=Y9A8_$unvDgK{`wulV2m%HE#AFeyjKAL0001pMAcANWz-Z? zTgx2#=E*%VUeP0(ZZV%P`K3Mh-QQIiUB#5|a%ISYuBOz}ei=1>MO|uWN;M452<-)} zNH0DQ&N$sM_gtxJ?vWovXWtw)Jh8{9htw|aS&jL>V4P(wwPu^J<~oAPf+JBrBt zhNer?Y&*{tk?i$8{z1mhnK*vPNnMw!!Obceq?qwdjhDzs;1Q6)z^F4Jd z#+Z<(M@j(z00000;2XH_`@V1ayJMt(_($-6w*yhG>*_e_m7cz1*KkS#=tNfI#X_l8 z1G7M@M{cC1uIt*Bs-MN@v$*~!T5uU^u%v}LK;2HyvayeCsDFUhbYn9y9s+A*Fl}rL zO;XT-xg1debz*i$Vcfzljz~a??hwlZPsrAu1hB%dT`1UyWY@ARuS&WIVjy##O5}-m;Qh&3J za_1rv8PQ*c5^6+$G04GA(1mu=2r_c;C^EeN`i`_di_^hUGbn~y;6D^bEEGdW z3O-f)pXn_JmZGjB^EdiGQl;jYiujo|?%0f*4YEy&Xn#tc^zY!>O?5q}6dgI}f%RN&k3R-48M0GFNxTH*5-e1@2Udu=#0qV(uN_|k?>1(eveDzKcZ`_u| zJ)Zu^C3|9Aq*Ke~m~@qL3fgL3zT}>HsqN^$ObX-P_U(t{nnoO7AKy9Zt@%~5hF8#=C##JP0R;cNFUs;1- zKwTsW0RR910Kl9tdy^@p^E$@3+R#!H`;k)010c3cD4AB}j`a#CW@X{87^Ap8QcA@w zQASjC2;>@aRbqF`Me}WDDW`t^7~^prUxat3C|&gSTtgm=dVf5k-PQb41i%+sRF_GKM_pvIusH0%dvY%zFkL4OM0G|4&ud7^S|`e%E7tte?Nk5Oa(}^13-@4D3o=-nt?FKDFyZ|u{t@8`W&+UjsD(_c4t&$f1g-Z6_l5h# za)tvi;eAmcsI#fiFe>lDXtWN-0`L*xznGx62D z`HRwyUhB>24EKmfHMTZna2iTmp|cc($Ju0maPx1MPUE{00000 k00000000000Qe950=;gef1&0Ne*gdg07*qoM6N<$f>Z10lmGw# delta 497 zcmVO7AKy9Zt@%~5hF8y$taTST06*lR6Us;1- z0FAN<0RR910Kl9tdy^@p<2uH;+t5}M_amiL20(0CP_nGb9qSoTWo6~B7^65pQcBe= zQASji1xgL2DzUrer1>_pRMI|wj4@xwKf5Oa06F)o)%?i!a*ftQ)e{@+t}Fb^ zECB!j0C*U4wV<{h5c=gErA1VGU0&>BCM>q>qCLL1+vky%qfxnaYWmcoSW_Aq$(r!g zNy4WXSF$x^5sYd<26MAl-Rlh|ydK5hBD}y#07f3QlIhifFIrik_y56l z;c>B&=>RNvUla&xHdPvC+o&p8tu_c z{CdUxOSi{TIr{YHU8b^sHFOhq$@<3z;4TmVX9$2Zj}5?GUc$H8h6Z(K+56C16b1kQ n000000000000000fd9ZR*9EE;Zwx5Z00000NkvXXu0mjfICtW8 diff --git a/tests_zemu/snapshots/sp-sign-add_delegator/00005.png b/tests_zemu/snapshots/sp-sign-add_delegator/00005.png index 08270ed09b3be6f279e5ad419c79df55a0569216..9a37b226f4ade2e55e8f739bfc35838b09b0a824 100644 GIT binary patch delta 761 zcmVE#QPtKyX+6AOqwquV07*K{OG8J zgb)FVwiEyW00000()mfSQEP3-+qNZGq;@kc4)98|w08sz#!aZTUf8PNs|@e3!9nj? z^;jKDwN|yRV@O_Ct0#<}yb&O2J~y}3?xS6^y(^b0000_=G3HE{9(7N$5MW@)_P{l>~&9S=t8wlns3aCw-IA^ zjl7BImG&!T)PJ@zF}dZb1l5+RKax9A_h?eUvf^lFMN_eHJhAjj8To6e@{25&eEl-s zzKr9YYL}KqTB|afib$H>rWs4&snpN>=zdDyRqV$#mPVZl05kk0taW+8`+&Vc@}tdyflenQ2B#vsxASc% zU76X#7S%PpdLMl{l*=eq8oi;G{K%2hBjmNOoncC}?*%D?dw-D?Ytq< z$Pchs3%eFs*QoN+>$TI-R5FfrcRT}i6UN%P*1PpzM_ZY~?iiZPP)dTMc36H1(EvpH zqK!>8pE}jdKzo9=TCGU)q(FWu7XSbN007*bwQ_sZ9IpJIFerEUr#$=0tcbtBvtzao zQny7?xM+JQY^h4I^NaGgh)G60wK9?2bnGQOZ3_BFslc751>g(6Rb7C5)zh6u{L`av rU@qk1MffO@FIE8n0000003H4SY*6Eo(htbx00000NkvXXu0mjfX_s@S delta 769 zcmV+c1OEJx2AKwsB!A#ZL_t(|ob8-ja>XDBhSN@WlKn5qz4Re-914g8uSx&!;Y<<{ zyrGfU9tQvb00000)A^cUBc+tD&-0vMk=mVUF~IjUOIJhC&e(*M(!x^xtTKGToP&;8 z^;&hNl#-g)FeIO=*(Z3M1F2)ZBrVLR@(VRimR?BiMJ> zN_`{7MvWXq^nXeIl`?8snV8)8B!X&7)$fTQsXH|(P_klZW=TyQZ`7n@K+4G9k}5k% z=Jn{8{cXz_wNvfVR8RXb`h+63nEM>W0(mOwZr@M-cIW_R_@6MT%FfAw zKDj%e1hV+`c(OZlsT%H1ViNvAhPe#$DR#>YuqU?bseh`5!aiI2@r-n*^2&_#vT4Lq zo%vNRT6|gSAG>ydZuDiXFK70c%sAfP2RrkRW}ywKG&1^ND6)B7XG0S?GF5ulq^iTO zm3LngWqFRmr~fWYes8u)VC*u&J`~94+3duUoOauBg(711SmcX6Q3G2tm1b-#l5J5I z*twOJxqoEETTzRm+E6#{_HC)2hJboe>Tjn-kCm`agW%avbyYCLB;mk733(oim9T1& zwU;ViS_{MUJe-?E97#UhnOHd+Yd8FK^fivuPhEBo$pP5tG)}J#%f|?IfTu08Z?YM{ z&ef|tPFp#br+89eQcSn!f)4(&@-Jk-QJsP?_Id#T06dHbEnRpETFjcils6(aRDkZP zE@@~L+D6gG@o)QFnZ3jH%xavk7AdeH% zNNOpnT2(ltto>O0?`pz$4y^(J000000Cau<6YBdUrzi%{00000NkvXXu0mjfduVm5 diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00001.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00001.png index ba14ce7a76dc79cbb125c8a4bea3b10c072799ef..914e0a285be181a49776f2969e7d8b26451c3cfb 100644 GIT binary patch delta 769 zcmV+c1OEJ&2AKwsB!A#ZL_t(|ob8%jlB^&Mg}GCAC+>eq?qwdVvC`xp5U~1uPu+?! zCM4>SQUCw|0002^2F~+5&y)Xd7-=8=3jVKlAj)wZ4M$z+X*+ffyCi^4WHDYy+|I98?VXY%IT+)mH3u#YXMfPZVcRWmUj0&Qe4ZPgZ< zq@V+1*`fmOiP;>5ehaJEA^|CyL(C7{AzNz_P!;~&g@TQUcP-6AwOzbJ000000D!Ni zdV=hKH!h!Y5T)74;p`&DT~KXcIMni^CrYtb0xp?|hlWd-MVa{G$er0M0U|Ud_wQ;W z-@C%o7PixZZhvXMjon(j%L^(X#alYh&2|+~x{Kgl)D^JF;{nY<^_y?hj;i*$Up*(_ zg!g;q-9pqLBl^=2LXGH8202&>y3k6TAR`Bl!o&No;V|u+I33IdgQ7?U_7kCILG+40 z-+MJ9(FBNR3d;0BZKt`n((v7Pf_UTB zB<}th5V>kqjEi(?z7~@%QBFZy4fn*@TVl1968N&?T~o#YH39KBHu!3U^10{WtnoRb zZ2BG$9Dimc?=Y9A8_$unvDgK{`wulV2m%HE#AFeyjKAL0001pMAcANWz-Z? zTgx2#=E*%VUeP0(ZZV%P`K3Mh-QQIiUB#5|a%ISYuBOz}ei=1>MO|uWN;M452<-)} zNH0DQ&N$sM_gtxJ?vWovXWtw)Jh8{9htw|aS&jL>V4P(wwPu^J<~oAPf+JBrBt zhNer?Y&*{tk?i$8{z1mhnK*vPNnMw!!Obceq?qwdjhDzs;1Q6)z^F4Jd z#+Z<(M@j(z00000;2XH_`@V1ayJMt(_($-6w*yhG>*_e_m7cz1*KkS#=tNfI#X_l8 z1G7M@M{cC1uIt*Bs-MN@v$*~!T5uU^u%v}LK;2HyvayeCsDFUhbYn9y9s+A*Fl}rL zO;XT-xg1debz*i$Vcfzljz~a??hwlZPsrAu1hB%dT`1UyWY@ARuS&WIVjy##O5}-m;Qh&3J za_1rv8PQ*c5^6+$G04GA(1mu=2r_c;C^EeN`i`_di_^hUGbn~y;6D^bEEGdW z3O-f)pXn_JmZGjB^EdiGQl;jYiujo|?%0f*4YEy&Xn#tc^zY!>O?5q}6dgI}f%RN&k3R-48M0GFNxTH*5-e1@2Udu=#0qV(uN_|k?>1(eveDzKcZ`_u| zJ)Zu^C3|9Aq*Ke~m~@qL3fgL3zT}>HsqN^$ObX-P_U(t{nnoO7AKy9Zt@%~5hF8#=C##JP0R;cNFUs;1- zKwTsW0RR910Kl9tdy^@p^E$@3+R#!H`;k)010c3cD4AB}j`a#CW@X{87^Ap8QcA@w zQASjC2;>@aRbqF`Me}WDDW`t^7~^prUxat3C|&gSTtgm=dVf5k-PQb41i%+sRF_GKM_pvIusH0%dvY%zFkL4OM0G|4&ud7^S|`e%E7tte?Nk5Oa(}^13-@4D3o=-nt?FKDFyZ|u{t@8`W&+UjsD(_c4t&$f1g-Z6_l5h# za)tvi;eAmcsI#fiFe>lDXtWN-0`L*xznGx62D z`HRwyUhB>24EKmfHMTZna2iTmp|cc($Ju0maPx1MPUE{00000 k00000000000Qe950=;gef1&0Ne*gdg07*qoM6N<$f>Z10lmGw# delta 497 zcmVO7AKy9Zt@%~5hF8y$taTST06*lR6Us;1- z0FAN<0RR910Kl9tdy^@p<2uH;+t5}M_amiL20(0CP_nGb9qSoTWo6~B7^65pQcBe= zQASji1xgL2DzUrer1>_pRMI|wj4@xwKf5Oa06F)o)%?i!a*ftQ)e{@+t}Fb^ zECB!j0C*U4wV<{h5c=gErA1VGU0&>BCM>q>qCLL1+vky%qfxnaYWmcoSW_Aq$(r!g zNy4WXSF$x^5sYd<26MAl-Rlh|ydK5hBD}y#07f3QlIhifFIrik_y56l z;c>B&=>RNvUla&xHdPvC+o&p8tu_c z{CdUxOSi{TIr{YHU8b^sHFOhq$@<3z;4TmVX9$2Zj}5?GUc$H8h6Z(K+56C16b1kQ n000000000000000fd9ZR*9EE;Zwx5Z00000NkvXXu0mjfICtW8 diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00005.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00005.png index 08270ed09b3be6f279e5ad419c79df55a0569216..9a37b226f4ade2e55e8f739bfc35838b09b0a824 100644 GIT binary patch delta 761 zcmVE#QPtKyX+6AOqwquV07*K{OG8J zgb)FVwiEyW00000()mfSQEP3-+qNZGq;@kc4)98|w08sz#!aZTUf8PNs|@e3!9nj? z^;jKDwN|yRV@O_Ct0#<}yb&O2J~y}3?xS6^y(^b0000_=G3HE{9(7N$5MW@)_P{l>~&9S=t8wlns3aCw-IA^ zjl7BImG&!T)PJ@zF}dZb1l5+RKax9A_h?eUvf^lFMN_eHJhAjj8To6e@{25&eEl-s zzKr9YYL}KqTB|afib$H>rWs4&snpN>=zdDyRqV$#mPVZl05kk0taW+8`+&Vc@}tdyflenQ2B#vsxASc% zU76X#7S%PpdLMl{l*=eq8oi;G{K%2hBjmNOoncC}?*%D?dw-D?Ytq< z$Pchs3%eFs*QoN+>$TI-R5FfrcRT}i6UN%P*1PpzM_ZY~?iiZPP)dTMc36H1(EvpH zqK!>8pE}jdKzo9=TCGU)q(FWu7XSbN007*bwQ_sZ9IpJIFerEUr#$=0tcbtBvtzao zQny7?xM+JQY^h4I^NaGgh)G60wK9?2bnGQOZ3_BFslc751>g(6Rb7C5)zh6u{L`av rU@qk1MffO@FIE8n0000003H4SY*6Eo(htbx00000NkvXXu0mjfX_s@S delta 769 zcmV+c1OEJx2AKwsB!A#ZL_t(|ob8-ja>XDBhSN@WlKn5qz4Re-914g8uSx&!;Y<<{ zyrGfU9tQvb00000)A^cUBc+tD&-0vMk=mVUF~IjUOIJhC&e(*M(!x^xtTKGToP&;8 z^;&hNl#-g)FeIO=*(Z3M1F2)ZBrVLR@(VRimR?BiMJ> zN_`{7MvWXq^nXeIl`?8snV8)8B!X&7)$fTQsXH|(P_klZW=TyQZ`7n@K+4G9k}5k% z=Jn{8{cXz_wNvfVR8RXb`h+63nEM>W0(mOwZr@M-cIW_R_@6MT%FfAw zKDj%e1hV+`c(OZlsT%H1ViNvAhPe#$DR#>YuqU?bseh`5!aiI2@r-n*^2&_#vT4Lq zo%vNRT6|gSAG>ydZuDiXFK70c%sAfP2RrkRW}ywKG&1^ND6)B7XG0S?GF5ulq^iTO zm3LngWqFRmr~fWYes8u)VC*u&J`~94+3duUoOauBg(711SmcX6Q3G2tm1b-#l5J5I z*twOJxqoEETTzRm+E6#{_HC)2hJboe>Tjn-kCm`agW%avbyYCLB;mk733(oim9T1& zwU;ViS_{MUJe-?E97#UhnOHd+Yd8FK^fivuPhEBo$pP5tG)}J#%f|?IfTu08Z?YM{ z&ef|tPFp#br+89eQcSn!f)4(&@-Jk-QJsP?_Id#T06dHbEnRpETFjcils6(aRDkZP zE@@~L+D6gG@o)QFnZ3jH%xavk7AdeH% zNNOpnT2(ltto>O0?`pz$4y^(J000000Cau<6YBdUrzi%{00000NkvXXu0mjfduVm5 diff --git a/tests_zemu/snapshots/sp-sign-add_validator/00001.png b/tests_zemu/snapshots/sp-sign-add_validator/00001.png index ba14ce7a76dc79cbb125c8a4bea3b10c072799ef..914e0a285be181a49776f2969e7d8b26451c3cfb 100644 GIT binary patch delta 769 zcmV+c1OEJ&2AKwsB!A#ZL_t(|ob8%jlB^&Mg}GCAC+>eq?qwdVvC`xp5U~1uPu+?! zCM4>SQUCw|0002^2F~+5&y)Xd7-=8=3jVKlAj)wZ4M$z+X*+ffyCi^4WHDYy+|I98?VXY%IT+)mH3u#YXMfPZVcRWmUj0&Qe4ZPgZ< zq@V+1*`fmOiP;>5ehaJEA^|CyL(C7{AzNz_P!;~&g@TQUcP-6AwOzbJ000000D!Ni zdV=hKH!h!Y5T)74;p`&DT~KXcIMni^CrYtb0xp?|hlWd-MVa{G$er0M0U|Ud_wQ;W z-@C%o7PixZZhvXMjon(j%L^(X#alYh&2|+~x{Kgl)D^JF;{nY<^_y?hj;i*$Up*(_ zg!g;q-9pqLBl^=2LXGH8202&>y3k6TAR`Bl!o&No;V|u+I33IdgQ7?U_7kCILG+40 z-+MJ9(FBNR3d;0BZKt`n((v7Pf_UTB zB<}th5V>kqjEi(?z7~@%QBFZy4fn*@TVl1968N&?T~o#YH39KBHu!3U^10{WtnoRb zZ2BG$9Dimc?=Y9A8_$unvDgK{`wulV2m%HE#AFeyjKAL0001pMAcANWz-Z? zTgx2#=E*%VUeP0(ZZV%P`K3Mh-QQIiUB#5|a%ISYuBOz}ei=1>MO|uWN;M452<-)} zNH0DQ&N$sM_gtxJ?vWovXWtw)Jh8{9htw|aS&jL>V4P(wwPu^J<~oAPf+JBrBt zhNer?Y&*{tk?i$8{z1mhnK*vPNnMw!!Obceq?qwdjhDzs;1Q6)z^F4Jd z#+Z<(M@j(z00000;2XH_`@V1ayJMt(_($-6w*yhG>*_e_m7cz1*KkS#=tNfI#X_l8 z1G7M@M{cC1uIt*Bs-MN@v$*~!T5uU^u%v}LK;2HyvayeCsDFUhbYn9y9s+A*Fl}rL zO;XT-xg1debz*i$Vcfzljz~a??hwlZPsrAu1hB%dT`1UyWY@ARuS&WIVjy##O5}-m;Qh&3J za_1rv8PQ*c5^6+$G04GA(1mu=2r_c;C^EeN`i`_di_^hUGbn~y;6D^bEEGdW z3O-f)pXn_JmZGjB^EdiGQl;jYiujo|?%0f*4YEy&Xn#tc^zY!>O?5q}6dgI}f%RN&k3R-48M0GFNxTH*5-e1@2Udu=#0qV(uN_|k?>1(eveDzKcZ`_u| zJ)Zu^C3|9Aq*Ke~m~@qL3fgL3zT}>HsqN^$ObX-P_U(t{nnoO7AKy9Zt@%~5hF8#=C##JP0R;cNFUs;1- zKwTsW0RR910Kl9tdy^@p^E$@3+R#!H`;k)010c3cD4AB}j`a#CW@X{87^Ap8QcA@w zQASjC2;>@aRbqF`Me}WDDW`t^7~^prUxat3C|&gSTtgm=dVf5k-PQb41i%+sRF_GKM_pvIusH0%dvY%zFkL4OM0G|4&ud7^S|`e%E7tte?Nk5Oa(}^13-@4D3o=-nt?FKDFyZ|u{t@8`W&+UjsD(_c4t&$f1g-Z6_l5h# za)tvi;eAmcsI#fiFe>lDXtWN-0`L*xznGx62D z`HRwyUhB>24EKmfHMTZna2iTmp|cc($Ju0maPx1MPUE{00000 k00000000000Qe950=;gef1&0Ne*gdg07*qoM6N<$f>Z10lmGw# delta 497 zcmVO7AKy9Zt@%~5hF8y$taTST06*lR6Us;1- z0FAN<0RR910Kl9tdy^@p<2uH;+t5}M_amiL20(0CP_nGb9qSoTWo6~B7^65pQcBe= zQASji1xgL2DzUrer1>_pRMI|wj4@xwKf5Oa06F)o)%?i!a*ftQ)e{@+t}Fb^ zECB!j0C*U4wV<{h5c=gErA1VGU0&>BCM>q>qCLL1+vky%qfxnaYWmcoSW_Aq$(r!g zNy4WXSF$x^5sYd<26MAl-Rlh|ydK5hBD}y#07f3QlIhifFIrik_y56l z;c>B&=>RNvUla&xHdPvC+o&p8tu_c z{CdUxOSi{TIr{YHU8b^sHFOhq$@<3z;4TmVX9$2Zj}5?GUc$H8h6Z(K+56C16b1kQ n000000000000000fd9ZR*9EE;Zwx5Z00000NkvXXu0mjfICtW8 diff --git a/tests_zemu/snapshots/sp-sign-add_validator/00005.png b/tests_zemu/snapshots/sp-sign-add_validator/00005.png index 08270ed09b3be6f279e5ad419c79df55a0569216..9a37b226f4ade2e55e8f739bfc35838b09b0a824 100644 GIT binary patch delta 761 zcmVE#QPtKyX+6AOqwquV07*K{OG8J zgb)FVwiEyW00000()mfSQEP3-+qNZGq;@kc4)98|w08sz#!aZTUf8PNs|@e3!9nj? z^;jKDwN|yRV@O_Ct0#<}yb&O2J~y}3?xS6^y(^b0000_=G3HE{9(7N$5MW@)_P{l>~&9S=t8wlns3aCw-IA^ zjl7BImG&!T)PJ@zF}dZb1l5+RKax9A_h?eUvf^lFMN_eHJhAjj8To6e@{25&eEl-s zzKr9YYL}KqTB|afib$H>rWs4&snpN>=zdDyRqV$#mPVZl05kk0taW+8`+&Vc@}tdyflenQ2B#vsxASc% zU76X#7S%PpdLMl{l*=eq8oi;G{K%2hBjmNOoncC}?*%D?dw-D?Ytq< z$Pchs3%eFs*QoN+>$TI-R5FfrcRT}i6UN%P*1PpzM_ZY~?iiZPP)dTMc36H1(EvpH zqK!>8pE}jdKzo9=TCGU)q(FWu7XSbN007*bwQ_sZ9IpJIFerEUr#$=0tcbtBvtzao zQny7?xM+JQY^h4I^NaGgh)G60wK9?2bnGQOZ3_BFslc751>g(6Rb7C5)zh6u{L`av rU@qk1MffO@FIE8n0000003H4SY*6Eo(htbx00000NkvXXu0mjfX_s@S delta 769 zcmV+c1OEJx2AKwsB!A#ZL_t(|ob8-ja>XDBhSN@WlKn5qz4Re-914g8uSx&!;Y<<{ zyrGfU9tQvb00000)A^cUBc+tD&-0vMk=mVUF~IjUOIJhC&e(*M(!x^xtTKGToP&;8 z^;&hNl#-g)FeIO=*(Z3M1F2)ZBrVLR@(VRimR?BiMJ> zN_`{7MvWXq^nXeIl`?8snV8)8B!X&7)$fTQsXH|(P_klZW=TyQZ`7n@K+4G9k}5k% z=Jn{8{cXz_wNvfVR8RXb`h+63nEM>W0(mOwZr@M-cIW_R_@6MT%FfAw zKDj%e1hV+`c(OZlsT%H1ViNvAhPe#$DR#>YuqU?bseh`5!aiI2@r-n*^2&_#vT4Lq zo%vNRT6|gSAG>ydZuDiXFK70c%sAfP2RrkRW}ywKG&1^ND6)B7XG0S?GF5ulq^iTO zm3LngWqFRmr~fWYes8u)VC*u&J`~94+3duUoOauBg(711SmcX6Q3G2tm1b-#l5J5I z*twOJxqoEETTzRm+E6#{_HC)2hJboe>Tjn-kCm`agW%avbyYCLB;mk733(oim9T1& zwU;ViS_{MUJe-?E97#UhnOHd+Yd8FK^fivuPhEBo$pP5tG)}J#%f|?IfTu08Z?YM{ z&ef|tPFp#br+89eQcSn!f)4(&@-Jk-QJsP?_Id#T06dHbEnRpETFjcils6(aRDkZP zE@@~L+D6gG@o)QFnZ3jH%xavk7AdeH% zNNOpnT2(ltto>O0?`pz$4y^(J000000Cau<6YBdUrzi%{00000NkvXXu0mjfduVm5 diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00003.png index 564da30e5e54b5c93a4029f6c1399e39e8050199..b7972acac802a502e60bf984d85adbcaadf44d35 100644 GIT binary patch delta 728 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 diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00007.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00007.png deleted file mode 100644 index 1e4be69934787c368c2b5ed677cc7f5a2470be3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2#G+&c}K^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00008.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00008.png deleted file mode 100644 index 1a4c3b9f793178735d1973dc0d5b2a8d9b7fc2d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^vknzBnwSXY|DHMyA_XBzS|R`d00000007`kd{!GUK#Xxn zK7??SB@_8sZNS?>02cGR+JKWZ%FAe_TFY)3;LH2uHv`-`y2fr9;0~`DAfEwFbHZf? zY~y`$ngM>@EpeFv>hcb&|GbHteBZ5YLaicCv$eN)?l; z+ReDEQ&lLJE0%7U$8}x_Esw$EV`z*~y&{Ew=-VmsvnqDDXfZK+r?xJ2L_)P;$_4Po z3}|fI_7ru`s=`H#J0~`TRWI`p)@(k%4nS=0Zdlzt}K zwta%QPHM}kHlo*GgaH5m006)e42^W=5AAw1<&By<&{Bv!@1SaQR4c{=V^)q&!erF& zK~$%dE0+<=O2ouK8_`c}iTbq|pOL8L(ySPo$)l!@H)^68;4=KGsj?sOydM3$zik<# zcB0+-si%DiePTgN_&x_6<3IU3X0_jzHxs+9y-RG19Xfy*ehC*<+36hWl(YUMkj1aZ zliit1)Ns~`ap(&fGG)k|BDcf@k^fJiiZC=0#p;K@J)jeJ~W>ysnq>W%E?;qR6hRRvq3}p4}$$@+9`! zz2hGD;(fDK0^^hso0i)35m1$G`~c`jb@ zR>Y!+HpGLweXG^e5D@>+`rB#IVP8#Q|4a>&}c7UfX%G@L#z|PgHJWg9B zm#27K;G&pr&jlTPv&8QM-pqju!q^7@0B|#Iv~*z?G?_WS6E-3?wSf53$@+jwG}O16 zaFR|>R~)96;#3%tUlVgO;;j~#JR5Kx%41#7U4np*?SQ*{uDVbM@Xv|sNU9c9JybZP rto>NxpLGQAe6$Jx000000Fe0yA^6>O({c_nz zfW%-wyGj8700000;Ac{6t+mE4Iptr+*Xah77RqlE(;6w(`t=Qp^Artl-$6^FSkRWq))h=l6i}z@~Z;N-yYV z_nwmpXg#M(!DmgEg(KtCDU);kDW&{6Shv3>sQaX~omwM0|0WCo00000bm&vk$}`KO z5@!9&x*yAV#EOX`H}u!iYUcbrlzFmQQ@QwLiuC011r(i%4Vu$}$lvwRTB- zbVuL`h&y%Wd+Tl4G8Kk`ONlI5bIvWRPIxyj+|xwbxqq`SLv^vjU-ZIz7w#89mxq76 zXzWLBz_xXV-Tn?422O!zFhh+TY@icl=XC3Pv0xw zb6+z(Cswwmh!%EBjf;lsZU?>#k~=;w>j4(dH&sDZlJ#6IFIAoS(Q33|UJYf&H!4tj zm}}>~z3XbL!)mDIvGz2=MTJt*t#PsZC{}m;91J9&%}urf$ST*7oe9>}tRl^m1vcxr z0000003aRrK9Qy+#lIwfGD*J+qR=PUcC!1oy=tPp{>HP_08&bHq}ig0k?PfKq@Dp0 z(Z&k5`h90YQttu!Cp20yrrHJ#Gmts~C7c7tF!S&)$(JCBDpgvq-e?Y_6&U6%tI81B jm!NMC5&!@I036~ERidpj0fp_@00000NkvXXu0mjfRF-Ib delta 751 zcmV<{9004l`BWNNqQ*lV4aaeu_mAUXY2tTQ zv3LY9hqBSYT%+D(MoJph(JZgLGoLL+0CQHb@Ap}t9=9SolYjMVK)PX3JqW4h^tEfx z$^ev>)2ZN`(`DjFKXuaVIsc@Tz8044&k5=}X)UK#kKTU~1^@s60027llr(Z?xmCi< zzl__lj0ZC^U1YRMmR8ee=cWK$XjT>bno5!B{fyp8xOmM{M8469#r9`HzZsTgkihCzd+}%X#Ik_$I;(u7m7k%*DiTgp&>EVwD_5H{O zY-V%V4mh4Ga0}dn>1xDa0u?7C2Dc*JYrd4HNxK*4)(srp2(XRp9sAn5_sZAoYr4lo zM@CCT3Ywi+)vL@ld>15_dwR#x(IWCzu&%N`PKmO@k?5+qoQ7LA$6Kf543<%?Q}DuS zcCf@qDSzWOBL(^1Z_|RDNv-?HZsB}W6;vfz%hmK!)#>l8Mjd>IcmZIUFI1rB&{xlE zTUXUqo7GUuVy(v{Lfy@P(dCIKP#O_nj h+k*fA0001s_yN5Ltujbuy>O({c_nz zfW%-wyGj8700000;Ac{6t+mE4Iptr+*Xah77RqlE(;6w(`t=Qp^Artl-$6^FSkRWq))h=l6i}z@~Z;N-yYV z_nwmpXg#M(!DmgEg(KtCDU);kDW&{6Shv3>sQaX~omwM0|0WCo00000bm&vk$}`KO z5@!9&x*yAV#EOX`H}u!iYUcbrlzFmQQ@QwLiuC011r(i%4Vu$}$lvwRTB- zbVuL`h&y%Wd+Tl4G8Kk`ONlI5bIvWRPIxyj+|xwbxqq`SLv^vjU-ZIz7w#89mxq76 zXzWLBz_xXV-Tn?422O!zFhh+TY@icl=XC3Pv0xw zb6+z(Cswwmh!%EBjf;lsZU?>#k~=;w>j4(dH&sDZlJ#6IFIAoS(Q33|UJYf&H!4tj zm}}>~z3XbL!)mDIvGz2=MTJt*t#PsZC{}m;91J9&%}urf$ST*7oe9>}tRl^m1vcxr z0000003aRrK9Qy+#lIwfGD*J+qR=PUcC!1oy=tPp{>HP_08&bHq}ig0k?PfKq@Dp0 z(Z&k5`h90YQttu!Cp20yrrHJ#Gmts~C7c7tF!S&)$(JCBDpgvq-e?Y_6&U6%tI81B jm!NMC5&!@I036~ERidpj0fp_@00000NkvXXu0mjfRF-Ib delta 751 zcmV<{9004l`BWNNqQ*lV4aaeu_mAUXY2tTQ zv3LY9hqBSYT%+D(MoJph(JZgLGoLL+0CQHb@Ap}t9=9SolYjMVK)PX3JqW4h^tEfx z$^ev>)2ZN`(`DjFKXuaVIsc@Tz8044&k5=}X)UK#kKTU~1^@s60027llr(Z?xmCi< zzl__lj0ZC^U1YRMmR8ee=cWK$XjT>bno5!B{fyp8xOmM{M8469#r9`HzZsTgkihCzd+}%X#Ik_$I;(u7m7k%*DiTgp&>EVwD_5H{O zY-V%V4mh4Ga0}dn>1xDa0u?7C2Dc*JYrd4HNxK*4)(srp2(XRp9sAn5_sZAoYr4lo zM@CCT3Ywi+)vL@ld>15_dwR#x(IWCzu&%N`PKmO@k?5+qoQ7LA$6Kf543<%?Q}DuS zcCf@qDSzWOBL(^1Z_|RDNv-?HZsB}W6;vfz%hmK!)#>l8Mjd>IcmZIUFI1rB&{xlE zTUXUqo7GUuVy(v{Lfy@P(dCIKP#O_nj h+k*fA0001s_yN5Ltujbuy>O({c_nz zfW%-wyGj8700000;Ac{6t+mE4Iptr+*Xah77RqlE(;6w(`t=Qp^Artl-$6^FSkRWq))h=l6i}z@~Z;N-yYV z_nwmpXg#M(!DmgEg(KtCDU);kDW&{6Shv3>sQaX~omwM0|0WCo00000bm&vk$}`KO z5@!9&x*yAV#EOX`H}u!iYUcbrlzFmQQ@QwLiuC011r(i%4Vu$}$lvwRTB- zbVuL`h&y%Wd+Tl4G8Kk`ONlI5bIvWRPIxyj+|xwbxqq`SLv^vjU-ZIz7w#89mxq76 zXzWLBz_xXV-Tn?422O!zFhh+TY@icl=XC3Pv0xw zb6+z(Cswwmh!%EBjf;lsZU?>#k~=;w>j4(dH&sDZlJ#6IFIAoS(Q33|UJYf&H!4tj zm}}>~z3XbL!)mDIvGz2=MTJt*t#PsZC{}m;91J9&%}urf$ST*7oe9>}tRl^m1vcxr z0000003aRrK9Qy+#lIwfGD*J+qR=PUcC!1oy=tPp{>HP_08&bHq}ig0k?PfKq@Dp0 z(Z&k5`h90YQttu!Cp20yrrHJ#Gmts~C7c7tF!S&)$(JCBDpgvq-e?Y_6&U6%tI81B jm!NMC5&!@I036~ERidpj0fp_@00000NkvXXu0mjfRF-Ib delta 751 zcmV<{9004l`BWNNqQ*lV4aaeu_mAUXY2tTQ zv3LY9hqBSYT%+D(MoJph(JZgLGoLL+0CQHb@Ap}t9=9SolYjMVK)PX3JqW4h^tEfx z$^ev>)2ZN`(`DjFKXuaVIsc@Tz8044&k5=}X)UK#kKTU~1^@s60027llr(Z?xmCi< zzl__lj0ZC^U1YRMmR8ee=cWK$XjT>bno5!B{fyp8xOmM{M8469#r9`HzZsTgkihCzd+}%X#Ik_$I;(u7m7k%*DiTgp&>EVwD_5H{O zY-V%V4mh4Ga0}dn>1xDa0u?7C2Dc*JYrd4HNxK*4)(srp2(XRp9sAn5_sZAoYr4lo zM@CCT3Ywi+)vL@ld>15_dwR#x(IWCzu&%N`PKmO@k?5+qoQ7LA$6Kf543<%?Q}DuS zcCf@qDSzWOBL(^1Z_|RDNv-?HZsB}W6;vfz%hmK!)#>l8Mjd>IcmZIUFI1rB&{xlE zTUXUqo7GUuVy(v{Lfy@P(dCIKP#O_nj h+k*fA0001s_yN5Ltujbuy>O({c_nz zfW%-wyGj8700000;Ac{6t+mE4Iptr+*Xah77RqlE(;6w(`t=Qp^Artl-$6^FSkRWq))h=l6i}z@~Z;N-yYV z_nwmpXg#M(!DmgEg(KtCDU);kDW&{6Shv3>sQaX~omwM0|0WCo00000bm&vk$}`KO z5@!9&x*yAV#EOX`H}u!iYUcbrlzFmQQ@QwLiuC011r(i%4Vu$}$lvwRTB- zbVuL`h&y%Wd+Tl4G8Kk`ONlI5bIvWRPIxyj+|xwbxqq`SLv^vjU-ZIz7w#89mxq76 zXzWLBz_xXV-Tn?422O!zFhh+TY@icl=XC3Pv0xw zb6+z(Cswwmh!%EBjf;lsZU?>#k~=;w>j4(dH&sDZlJ#6IFIAoS(Q33|UJYf&H!4tj zm}}>~z3XbL!)mDIvGz2=MTJt*t#PsZC{}m;91J9&%}urf$ST*7oe9>}tRl^m1vcxr z0000003aRrK9Qy+#lIwfGD*J+qR=PUcC!1oy=tPp{>HP_08&bHq}ig0k?PfKq@Dp0 z(Z&k5`h90YQttu!Cp20yrrHJ#Gmts~C7c7tF!S&)$(JCBDpgvq-e?Y_6&U6%tI81B jm!NMC5&!@I036~ERidpj0fp_@00000NkvXXu0mjfRF-Ib delta 751 zcmV<{9004l`BWNNqQ*lV4aaeu_mAUXY2tTQ zv3LY9hqBSYT%+D(MoJph(JZgLGoLL+0CQHb@Ap}t9=9SolYjMVK)PX3JqW4h^tEfx z$^ev>)2ZN`(`DjFKXuaVIsc@Tz8044&k5=}X)UK#kKTU~1^@s60027llr(Z?xmCi< zzl__lj0ZC^U1YRMmR8ee=cWK$XjT>bno5!B{fyp8xOmM{M8469#r9`HzZsTgkihCzd+}%X#Ik_$I;(u7m7k%*DiTgp&>EVwD_5H{O zY-V%V4mh4Ga0}dn>1xDa0u?7C2Dc*JYrd4HNxK*4)(srp2(XRp9sAn5_sZAoYr4lo zM@CCT3Ywi+)vL@ld>15_dwR#x(IWCzu&%N`PKmO@k?5+qoQ7LA$6Kf543<%?Q}DuS zcCf@qDSzWOBL(^1Z_|RDNv-?HZsB}W6;vfz%hmK!)#>l8Mjd>IcmZIUFI1rB&{xlE zTUXUqo7GUuVy(v{Lfy@P(dCIKP#O_nj h+k*fA0001s_yN5Ltujbuy>O({c_nz zfW%-wyGj8700000;Ac{6t+mE4Iptr+*Xah77RqlE(;6w(`t=Qp^Artl-$6^FSkRWq))h=l6i}z@~Z;N-yYV z_nwmpXg#M(!DmgEg(KtCDU);kDW&{6Shv3>sQaX~omwM0|0WCo00000bm&vk$}`KO z5@!9&x*yAV#EOX`H}u!iYUcbrlzFmQQ@QwLiuC011r(i%4Vu$}$lvwRTB- zbVuL`h&y%Wd+Tl4G8Kk`ONlI5bIvWRPIxyj+|xwbxqq`SLv^vjU-ZIz7w#89mxq76 zXzWLBz_xXV-Tn?422O!zFhh+TY@icl=XC3Pv0xw zb6+z(Cswwmh!%EBjf;lsZU?>#k~=;w>j4(dH&sDZlJ#6IFIAoS(Q33|UJYf&H!4tj zm}}>~z3XbL!)mDIvGz2=MTJt*t#PsZC{}m;91J9&%}urf$ST*7oe9>}tRl^m1vcxr z0000003aRrK9Qy+#lIwfGD*J+qR=PUcC!1oy=tPp{>HP_08&bHq}ig0k?PfKq@Dp0 z(Z&k5`h90YQttu!Cp20yrrHJ#Gmts~C7c7tF!S&)$(JCBDpgvq-e?Y_6&U6%tI81B jm!NMC5&!@I036~ERidpj0fp_@00000NkvXXu0mjfRF-Ib delta 751 zcmV<{9004l`BWNNqQ*lV4aaeu_mAUXY2tTQ zv3LY9hqBSYT%+D(MoJph(JZgLGoLL+0CQHb@Ap}t9=9SolYjMVK)PX3JqW4h^tEfx z$^ev>)2ZN`(`DjFKXuaVIsc@Tz8044&k5=}X)UK#kKTU~1^@s60027llr(Z?xmCi< zzl__lj0ZC^U1YRMmR8ee=cWK$XjT>bno5!B{fyp8xOmM{M8469#r9`HzZsTgkihCzd+}%X#Ik_$I;(u7m7k%*DiTgp&>EVwD_5H{O zY-V%V4mh4Ga0}dn>1xDa0u?7C2Dc*JYrd4HNxK*4)(srp2(XRp9sAn5_sZAoYr4lo zM@CCT3Ywi+)vL@ld>15_dwR#x(IWCzu&%N`PKmO@k?5+qoQ7LA$6Kf543<%?Q}DuS zcCf@qDSzWOBL(^1Z_|RDNv-?HZsB}W6;vfz%hmK!)#>l8Mjd>IcmZIUFI1rB&{xlE zTUXUqo7GUuVy(v{Lfy@P(dCIKP#O_nj h+k*fA0001s_yN5Ltujbuy>O({c_nz zfW%-wyGj8700000;Ac{6t+mE4Iptr+*Xah77RqlE(;6w(`t=Qp^Artl-$6^FSkRWq))h=l6i}z@~Z;N-yYV z_nwmpXg#M(!DmgEg(KtCDU);kDW&{6Shv3>sQaX~omwM0|0WCo00000bm&vk$}`KO z5@!9&x*yAV#EOX`H}u!iYUcbrlzFmQQ@QwLiuC011r(i%4Vu$}$lvwRTB- zbVuL`h&y%Wd+Tl4G8Kk`ONlI5bIvWRPIxyj+|xwbxqq`SLv^vjU-ZIz7w#89mxq76 zXzWLBz_xXV-Tn?422O!zFhh+TY@icl=XC3Pv0xw zb6+z(Cswwmh!%EBjf;lsZU?>#k~=;w>j4(dH&sDZlJ#6IFIAoS(Q33|UJYf&H!4tj zm}}>~z3XbL!)mDIvGz2=MTJt*t#PsZC{}m;91J9&%}urf$ST*7oe9>}tRl^m1vcxr z0000003aRrK9Qy+#lIwfGD*J+qR=PUcC!1oy=tPp{>HP_08&bHq}ig0k?PfKq@Dp0 z(Z&k5`h90YQttu!Cp20yrrHJ#Gmts~C7c7tF!S&)$(JCBDpgvq-e?Y_6&U6%tI81B jm!NMC5&!@I036~ERidpj0fp_@00000NkvXXu0mjfRF-Ib delta 751 zcmV<{9004l`BWNNqQ*lV4aaeu_mAUXY2tTQ zv3LY9hqBSYT%+D(MoJph(JZgLGoLL+0CQHb@Ap}t9=9SolYjMVK)PX3JqW4h^tEfx z$^ev>)2ZN`(`DjFKXuaVIsc@Tz8044&k5=}X)UK#kKTU~1^@s60027llr(Z?xmCi< zzl__lj0ZC^U1YRMmR8ee=cWK$XjT>bno5!B{fyp8xOmM{M8469#r9`HzZsTgkihCzd+}%X#Ik_$I;(u7m7k%*DiTgp&>EVwD_5H{O zY-V%V4mh4Ga0}dn>1xDa0u?7C2Dc*JYrd4HNxK*4)(srp2(XRp9sAn5_sZAoYr4lo zM@CCT3Ywi+)vL@ld>15_dwR#x(IWCzu&%N`PKmO@k?5+qoQ7LA$6Kf543<%?Q}DuS zcCf@qDSzWOBL(^1Z_|RDNv-?HZsB}W6;vfz%hmK!)#>l8Mjd>IcmZIUFI1rB&{xlE zTUXUqo7GUuVy(v{Lfy@P(dCIKP#O_nj h+k*fA0001s_yN5Ltujbuy5T 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 delta 11259 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 diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00000.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00000.png deleted file mode 100644 index a044689603a0bd42085db380932eb679f02ae8d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8278 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 C$Lgp6 diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00003.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00003.png deleted file mode 100644 index 4cbcef111bcb1fd8b3f3158b9e024f8a2b32f040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9182 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 diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00004.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00004.png deleted file mode 100644 index dacc7cd3fdcf9e62533392598cdd15a72ed3e775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11608 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 diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/st-sign-tx-eth-path/00000.png similarity index 100% rename from tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00000.png rename to tests_zemu/snapshots/st-sign-tx-eth-path/00000.png diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/st-sign-tx-eth-path/00001.png similarity index 100% rename from tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00001.png rename to tests_zemu/snapshots/st-sign-tx-eth-path/00001.png diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00002.png b/tests_zemu/snapshots/st-sign-tx-eth-path/00002.png similarity index 100% rename from tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr/00002.png rename to tests_zemu/snapshots/st-sign-tx-eth-path/00002.png diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00003.png b/tests_zemu/snapshots/st-sign-tx-eth-path/00003.png similarity index 100% rename from tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00003.png rename to tests_zemu/snapshots/st-sign-tx-eth-path/00003.png diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/st-sign-tx-eth-path/00004.png similarity index 100% rename from tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00004.png rename to tests_zemu/snapshots/st-sign-tx-eth-path/00004.png diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png index 0e0c3d04c888eecc57c945ffac25c9f0163ea8be..e1aee92b8b99cdd839f02e0e1b9799bbb0078b70 100644 GIT binary patch delta 297 zcmdnXbcAVwNcsqjFe@+`2Q@t(MTA$hYHRjdC*@f*L{tHe@2kc+nxps;B7RJr{80#jz qeZ1KEao=p`py-84a4#`1Jn)N8Pv7$HPEcktNYvBS&t;ucLK6V1H;kSD delta 290 zcmV+-0p0$@0=)u|B!2`+L_t(|obB05a)U4s1wfL@O?3Yw=`LANQ4#S=sMvZY-75?% z#!u4NplJdC0000000181ZFB*Sa5AiX&fD<>1do6tc_AJ*&8>Cum zw@@~3i}F6YfD^UWt{2V9m+5=T>*LMaa-^?-y=i-pW*2v6?te}C0BqW8GMh3xPm|t) zE(_1S=?5Tu!Oq&;KdyFpTgdl1DI=uHd)p0J`cJbFwe+9N7>uL~jpTQDq}Pu3;NRr6 zOZ>vYtA%TqLL@#3cVWe5cW3LFdwH6Nx1huo@Q3Cdg0@Kz=;i~EFZ6ZvU3Y+A$+~xU oXS(AbUIG9B02=@R0091pPnsLSa)uoAQvd(}07*qoM6N<$f?`UCvH$=8 diff --git a/tests_zemu/snapshots/x-mainmenu/00010.png b/tests_zemu/snapshots/x-mainmenu/00010.png index 0e0c3d04c888eecc57c945ffac25c9f0163ea8be..e1aee92b8b99cdd839f02e0e1b9799bbb0078b70 100644 GIT binary patch delta 297 zcmdnXbcAVwNcsqjFe@+`2Q@t(MTA$hYHRjdC*@f*L{tHe@2kc+nxps;B7RJr{80#jz qeZ1KEao=p`py-84a4#`1Jn)N8Pv7$HPEcktNYvBS&t;ucLK6V1H;kSD delta 290 zcmV+-0p0$@0=)u|B!2`+L_t(|obB05a)U4s1wfL@O?3Yw=`LANQ4#S=sMvZY-75?% z#!u4NplJdC0000000181ZFB*Sa5AiX&fD<>1do6tc_AJ*&8>Cum zw@@~3i}F6YfD^UWt{2V9m+5=T>*LMaa-^?-y=i-pW*2v6?te}C0BqW8GMh3xPm|t) zE(_1S=?5Tu!Oq&;KdyFpTgdl1DI=uHd)p0J`cJbFwe+9N7>uL~jpTQDq}Pu3;NRr6 zOZ>vYtA%TqLL@#3cVWe5cW3LFdwH6Nx1huo@Q3Cdg0@Kz=;i~EFZ6ZvU3Y+A$+~xU oXS(AbUIG9B02=@R0091pPnsLSa)uoAQvd(}07*qoM6N<$f?`UCvH$=8 diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00000.png deleted file mode 100644 index fe99275af47b9c3bfd718e91f4fe807299b7151f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmV;!0X+VRP)*KSz zUUU}vZtQgbagTd9 zt|Z)Js9B;JTyMf}2Lo=x0000;uhtsj{T5k8c@b;x=pT<3#>2Jso7(t;(LOT-I*QP- z8xJpa;AY`l&l)fL;-9%J)?u89*H&|1&kA)Qs>MoxaqlJ#a%*1{s0DSi2(H`rdX_{z tAB~s*QL)~7%DguV00000006)v`~hL2?Bd*HXPf{4002ovPDHLkV1lI*#~uIx diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00001.png deleted file mode 100644 index eb9d49b862fba67b0a996acb5a83f06f78d12829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{$ba4!+nDh2#;G|{+o`%G2 zmuElu=l)2qwm|K$lS8!XlCS^g$#lieVhJ-)1?oC*_x>x!Ka-2EWeY}H2$`S1%4~3k z`|q>|0V{iFFf0{zaygTooB2E2`?h_El-z3egcFwElR~zI%%8S>ieUa`B_+p2^OMds zXq{@V$yvp8{g}}s;kL@&4&w)5i_{lv-!SEjs%p{I=}Kx2*XNi$diH3a=Hx5g`@X$= zD%Acbh(-BaL$o3zLqUAq@`cmqlu}IBQ1_^t*`njxgN@xNA8zr@; diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00002.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00002.png deleted file mode 100644 index 3dbb87f080ec0c864ead8316db0349e5198c134c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh2#?xbb~o`%G- z<>n9nxu1&t#%|0r`NP#+0&CuX?q0QkS4hMesEI+&+r{O`Z!MWWRq+lSicc=&ziux6 z_4{cpqpy-svQOfv){t}TA={^H4Y6Le@{@u7KV^rzolnn;?B2A1?{szha*fr`i+V1a z|9aTM=W(yAwfBeO&nL{wmn``0_Ce{nV8F7p*>|GfL=>J^k+)W2o$C2>t=84ZD}EAl zU-ipY0&U+{7dHQZon~2BLK>f3nEw?m*Vn4by1b#+Eklk*d;NFOeZRsfJ$!XQZN+>0 zE9d8I-p=fS?83{1ORqYt=Iqn diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00004.png deleted file mode 100644 index f2c38f616ae199db3f5f4f2639eb3d9a3c887982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Cba4!+nDh3guTZlBPg~-x zm%c^+m7nUx8XQ(|yYjK!<$ii-p|ib!!7>)0raSM9cQMaikyWdyw79Bh*ZmiKZ$2!! z)9t~0VTF9Rky+Z}^!pcOZ#af}@B7)_@np*9r8i&1EU`T>=UMGP`KANj0kfV(yB)26 zvDL#nAkj@m`@7N;p%C-5Li0qR%gT#NcuddF`nq$jB($AnVy zmb))2uv3SV%0eH$&YS|IjjA>EfF~R-&u*~i4m=C lQJgakcZhrhg$**8{*&4E&q6&*O|4>(u&1k^%Q~loCIHh^k?sHh diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00005.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00005.png deleted file mode 100644 index b80926a9d1e28e78598a7829a82638d3bbc6f96f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmV-n1D^beP)2WWT4BfFy*$u%X962qAr4-r&wfy;_`b|UC*UUosZ7Y(NJ9R$cuRyUOBg8nBMbG0-JYA?~ zKyGuMXZ1eGCFPpXDv@SOQ~nN=t-!_pDWy&IYqONkdT7tU4_7w*!R(`@$u1QK1Xm`jJMmx+3+?3YKY-*G#- z`oZWq*`G+bU!wysA}*>mplD+Iri-fWv)gl3fr(;+>jxS9&Z&^upDUn-M|br-;uw?F&{@y^HwdT~egB{#?>>53RZP5{ r*>Z;qTlg=w#speI2qA((4}1_uEIu@i>lDi>YkaeVpgu*YjpA@;m=Uq}3?fWn-cBQESXV0dIib z8IFHREx@x~wp7P#eKe)@((DuP228#6uSB-EwmQ^RGq)`M3^+s3S?LQ)(sGIak*mc| zK!=`{g%LWxb{gHpPr$h&73)#vh{G5a+nP>xtNCcrC*5F2dSeTJSZo^PdtEXCmplmo z0AoM?x9n7YbRo!|5$2qAXFX1T01rLODW1hGsr~WO(oPs-x+fdiCrktAjr(Y sR)iM-000000000000000007wL31}iuS)=~`P5=M^07*qoM6N<$f=P?a0RR91 diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00007.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00007.png deleted file mode 100644 index 1e4be69934787c368c2b5ed677cc7f5a2470be3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2#G+&c}K^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00008.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00008.png deleted file mode 100644 index 1a4c3b9f793178735d1973dc0d5b2a8d9b7fc2d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^vknzBnwSXY|DHMyA_XBzS|R`d00000007`kd{!GUK#Xxn zK7??SB@_8sZNS?>02cGR+JKWZ%FAe_TFY)3;LH2uHv`-`y2fr9;0~`DAfEwFbHZf? zY~y`$ngM>@EpeFv>hcb&|GbHteBZ5YLaicCv$eN)?l; z+ReDEQ&lLJE0%7U$8}x_Esw$EV`z*~y&{Ew=-VmsvnqDDXfZK+r?xJ2L_)P;$_4Po z3}|fI_7ru`s=`H#J0~`TRWI`p)@(k*KSz zUUU}vZtQgbagTd9 zt|Z)Js9B;JTyMf}2Lo=x0000;uhtsj{T5k8c@b;x=pT<3#>2Jso7(t;(LOT-I*QP- z8xJpa;AY`l&l)fL;-9%J)?u89*H&|1&kA)Qs>MoxaqlJ#a%*1{s0DSi2(H`rdX_{z tAB~s*QL)~7%DguV00000006)v`~hL2?Bd*HXPf{4002ovPDHLkV1lI*#~uIx diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00001.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00001.png deleted file mode 100644 index eb9d49b862fba67b0a996acb5a83f06f78d12829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{$ba4!+nDh2#;G|{+o`%G2 zmuElu=l)2qwm|K$lS8!XlCS^g$#lieVhJ-)1?oC*_x>x!Ka-2EWeY}H2$`S1%4~3k z`|q>|0V{iFFf0{zaygTooB2E2`?h_El-z3egcFwElR~zI%%8S>ieUa`B_+p2^OMds zXq{@V$yvp8{g}}s;kL@&4&w)5i_{lv-!SEjs%p{I=}Kx2*XNi$diH3a=Hx5g`@X$= zD%Acbh(-BaL$o3zLqUAq@`cmqlu}IBQ1_^t*`njxgN@xNA8zr@; diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00002.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00002.png deleted file mode 100644 index 3dbb87f080ec0c864ead8316db0349e5198c134c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh2#?xbb~o`%G- z<>n9nxu1&t#%|0r`NP#+0&CuX?q0QkS4hMesEI+&+r{O`Z!MWWRq+lSicc=&ziux6 z_4{cpqpy-svQOfv){t}TA={^H4Y6Le@{@u7KV^rzolnn;?B2A1?{szha*fr`i+V1a z|9aTM=W(yAwfBeO&nL{wmn``0_Ce{nV8F7p*>|GfL=>J^k+)W2o$C2>t=84ZD}EAl zU-ipY0&U+{7dHQZon~2BLK>f3nEw?m*Vn4by1b#+Eklk*d;NFOeZRsfJ$!XQZN+>0 zE9d8I-p=fS?83{1ORqYt=Iqn diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00004.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00004.png deleted file mode 100644 index f2c38f616ae199db3f5f4f2639eb3d9a3c887982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Cba4!+nDh3guTZlBPg~-x zm%c^+m7nUx8XQ(|yYjK!<$ii-p|ib!!7>)0raSM9cQMaikyWdyw79Bh*ZmiKZ$2!! z)9t~0VTF9Rky+Z}^!pcOZ#af}@B7)_@np*9r8i&1EU`T>=UMGP`KANj0kfV(yB)26 zvDL#nAkj@m`@7N;p%C-5Li0qR%gT#NcuddF`nq$jB($AnVy zmb))2uv3SV%0eH$&YS|IjjA>EfF~R-&u*~i4m=C lQJgakcZhrhg$**8{*&4E&q6&*O|4>(u&1k^%Q~loCIHh^k?sHh diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00000.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00000.png similarity index 100% rename from tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00000.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00000.png diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00001.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00001.png similarity index 100% rename from tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00001.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00001.png diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00002.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00002.png similarity index 100% rename from tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00002.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00002.png diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00003.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00003.png similarity index 100% rename from tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00003.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00003.png diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00004.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00004.png similarity index 100% rename from tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr/00004.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00004.png diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00005.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00005.png similarity index 100% rename from tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00005.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00005.png diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00006.png b/tests_zemu/snapshots/x-sign-tx-eth-path/00006.png similarity index 100% rename from tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr/00006.png rename to tests_zemu/snapshots/x-sign-tx-eth-path/00006.png diff --git a/tests_zemu/tests/transactions.test.ts b/tests_zemu/tests/transactions.test.ts index 264bafd..e2731b4 100644 --- a/tests_zemu/tests/transactions.test.ts +++ b/tests_zemu/tests/transactions.test.ts @@ -16,7 +16,7 @@ import Zemu from '@zondax/zemu' import FlareApp from '@zondax/ledger-flare' -import { models, hdpath, defaultOptions } from './common' +import { models, hdpath, defaultOptions, ETH_PATH } from './common' import secp256k1 from 'secp256k1' import { createHash } from 'crypto' import { sha256 } from 'js-sha256' @@ -93,13 +93,6 @@ const TEST_DATA = [ 'hex', ), }, - { - name: 'flare_c_export_p_change_addr', - blob: Buffer.from( - '0000000000010000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000000000000000000000000000000000000000000000000000000000000000000015a6a8c28a2fc040df3b7490440c50f00099c957a000000028fb5f04058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000000000001c0000000258734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700000002541b264000000000000000000000000100000001db89a2339639a5f3fa183258cfea265e4d1cce6c58734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700000000000000000000000000000000000000010000000125f4a6d0cd20b9472a78d002426e121031400bbc', - 'hex', - ), - }, ] jest.setTimeout(120000) @@ -235,4 +228,45 @@ describe.each(models)('Transactions', function (m) { await sim.close() } }) + + test.concurrent('sign tx with 44/60', async function () { + const sim = new Zemu(m.path) + try { + await sim.start({ ...defaultOptions, model: m.name }) + const app = new FlareApp(sim.getTransport()) + + const responseAddr = await app.getAddressAndPubKey(ETH_PATH) + expect(responseAddr.returnCode).toEqual(0x9000) + console.log(responseAddr) + + const pubKeyRaw = new Uint8Array(responseAddr.compressed_pk!) + const pubKey = secp256k1.publicKeyConvert(pubKeyRaw, true) + + const signatureRequest = app.sign(ETH_PATH, TEST_DATA[0].blob) + + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign-tx-eth-path`) + + const signatureResponse = await signatureRequest + console.log(signatureResponse) + + expect(signatureResponse).toHaveProperty('s') + expect(signatureResponse).toHaveProperty('r') + expect(signatureResponse).toHaveProperty('v') + expect(signatureResponse.returnCode).toEqual(0x9000) + expect(signatureResponse.errorMessage).toEqual('No errors') + + const EC = new ec('secp256k1') + const signature_obj = { + r: signatureResponse.r!, + s: signatureResponse.s!, + } + // Now verify the signature + const message = createHash('sha256').update(TEST_DATA[0].blob).digest() + const valid = EC.verify(message, signature_obj, Buffer.from(pubKey), 'hex') + expect(valid).toEqual(true) + } finally { + await sim.close() + } + }) }) From cf61248b40179cc63f169794830981da8e8accd4 Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Fri, 1 Mar 2024 11:41:50 +0000 Subject: [PATCH 6/7] update apduspec --- docs/APDUSPEC.md | 118 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/docs/APDUSPEC.md b/docs/APDUSPEC.md index ab492a2..2f572f4 100644 --- a/docs/APDUSPEC.md +++ b/docs/APDUSPEC.md @@ -72,7 +72,6 @@ The general structure of commands and responses is as follows: ### INS_GET_ADDR -Derivation Path can #### Command | Field | Type | Content | Expected | @@ -106,7 +105,7 @@ Derivation Path can | Field | Type | Content | Expected | | ----- | -------- | ---------------------- | --------- | -| CLA | byte (1) | Application Identifier | 0x98 | +| CLA | byte (1) | Application Identifier | 0x58 | | INS | byte (1) | Instruction ID | 0x02 | | P1 | byte (1) | Payload desc | 0 = init | | | | | 1 = add | @@ -123,7 +122,120 @@ All other packets/chunks contain data chunks that are described below | Field | Type | Content | Expected | | ------- | -------- | -------------------- | -------- | | Path[0] | byte (4) | Derivation Path Data | 44 | -| Path[1] | byte (4) | Derivation Path Data | 9000 | +| Path[1] | byte (4) | Derivation Path Data | 9000 or 60| +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +##### Other Chunks/Packets + +| Field | Type | Content | Expected | +| ------- | -------- | --------------- | -------- | +| Message | bytes... | Message to Sign | | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| SIG | byte (65) | Signature | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_SIGN_HASH + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | --------- | +| CLA | byte (1) | Application Identifier | 0x58 | +| INS | byte (1) | Instruction ID | 0x03 | +| P1 | byte (1) | Payload desc | 0 = init | +| | | | 1 = add | +| | | | 2 = last | +| P2 | byte (1) | ---- | not used | +| L | byte (1) | Bytes in payload | (depends) | + +The first packet/chunk includes only the derivation path + +All other packets/chunks contain data chunks that are described below + +##### First Packet + +| Field | Type | Content | Expected | +| ------- | -------- | -------------------- | -------- | +| Path[0] | byte (4) | Derivation Path Data | 44 | +| Path[1] | byte (4) | Derivation Path Data | 9000 or 60 | +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +##### Other Chunks/Packets + +| Field | Type | Content | Expected | +| ------- | -------- | --------------- | -------- | +| Message | bytes... | Hash to Sign | | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| SIG | byte (65) | Signature | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_GET_ADDR_ETH + +#### Command + +| Field | Type | Content | Expected | +| ------- | --------------- | ------------------------- | ----------------- | +| CLA | byte (1) | Application Identifier | 0xE0 | +| INS | byte (1) | Instruction ID | 0x02 | +| P1 | byte (1) | Request User confirmation | No = 0 | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | (depends) | +| Path[0] | byte (4) | Derivation Path Data | 0x8000002c | +| Path[1] | byte (4) | Derivation Path Data | 0x8000003c | +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| PK | byte (33) | Public Key | Compressed public key | +| ADDR | byte (??) | address | Bech32 encoded address | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_SIGN_ETH + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | --------- | +| CLA | byte (1) | Application Identifier | 0xE0 | +| INS | byte (1) | Instruction ID | 0x04 | +| P1 | byte (1) | Payload desc | 0 = init | +| | | | 1 = add | +| | | | 2 = last | +| P2 | byte (1) | ---- | not used | +| L | byte (1) | Bytes in payload | (depends) | + +The first packet/chunk includes only the derivation path + +All other packets/chunks contain data chunks that are described below + +##### First Packet + +| Field | Type | Content | Expected | +| ------- | -------- | -------------------- | -------- | +| Path[0] | byte (4) | Derivation Path Data | 44 | +| Path[1] | byte (4) | Derivation Path Data | 60 | | Path[2] | byte (4) | Derivation Path Data | ? | | Path[3] | byte (4) | Derivation Path Data | ? | | Path[4] | byte (4) | Derivation Path Data | ? | From 8ee520eca6848bbb078f7ff70500f6766c8eb4ed Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Fri, 1 Mar 2024 11:44:19 +0000 Subject: [PATCH 7/7] make linter happy --- app/src/addr.h | 3 +++ app/src/eth_addr.h | 3 +++ app/src/hash.h | 2 ++ 3 files changed, 8 insertions(+) diff --git a/app/src/addr.h b/app/src/addr.h index 2245856..eb61650 100644 --- a/app/src/addr.h +++ b/app/src/addr.h @@ -19,6 +19,9 @@ #ifdef __cplusplus extern "C" { #endif +#include + +#include "zxerror.h" // Return the number of items in the address view zxerr_t addr_getNumItems(uint8_t *num_items); diff --git a/app/src/eth_addr.h b/app/src/eth_addr.h index 9b9f0aa..20e7e2d 100644 --- a/app/src/eth_addr.h +++ b/app/src/eth_addr.h @@ -19,6 +19,9 @@ #ifdef __cplusplus extern "C" { #endif +#include + +#include "zxerror.h" /// Return the number of items in the address view zxerr_t eth_addr_getNumItems(uint8_t *num_items); diff --git a/app/src/hash.h b/app/src/hash.h index c040d60..c8289c7 100644 --- a/app/src/hash.h +++ b/app/src/hash.h @@ -19,6 +19,8 @@ #ifdef __cplusplus extern "C" { #endif +#include + #include "zxerror.h" const char *hash_parse();